The code:
struct tmp_device {
char** descr;
int descr_len;
};
typedef struct tmp_device tmp_device_t;
static void release_device(tmp_device_t* d) {
if (d != NULL) {
if (d->descr != NULL) {
int i = 0;
for (; i < d->descr_len; i++) {
if (d->descr[i] != NULL) {
free(d->descr[i]);
}
}
free(d->descr);
}
free(d);
}
}
The checker:
@@
expression E;
identifier func !~ "dbg";
@@
free(E)
...
(
- func(E)
+ BUG(E)
)
The result:
EXN:Invalid_argument("equal: abstract value")
Regards,
Robert
_______________________________________________
Cocci mailing list
[email protected]
http://lists.diku.dk/mailman/listinfo/cocci
(Web access from inside DIKUs LAN only)