
On Monday, August 29, 2011 01:39:18 Ajay Bhargav wrote:
----- "Mike Frysinger" vapier@gentoo.org wrote:
On Monday, August 29, 2011 01:10:49 Ajay Bhargav wrote:
----- "Mike Frysinger" vapier@gentoo.org wrote:
On Friday, August 26, 2011 02:36:51 Ajay Bhargav wrote:
darmdfec = malloc(sizeof(struct armdfec_device));
if (!darmdfec)
goto error;
if this first one fails, we jump to:
+error:
free(darmdfec->p_aligned_txbuf);
free(darmdfec->p_rxbuf);
free(darmdfec->p_rxdesc);
free(darmdfec->htpr);
looks like 4 NULL pointer derefs. so you'll need one specific
path
for the first malloc(), but the rest are fine.
so you mean like this...
if(!darmdfec)
goto error;
...
error1: free(darmdfec->p_aligned_txbuf); free(darmdfec->p_rxbuf); free(darmdfec->p_rxdesc); free(darmdfec->htpr);
error: free(darmdfec); return -1;
that's one way of fixing it
Any other better way?
since all your buffers are known fixed (at compile time) sizes, you could simply inline them into the structure so you only malloc() one buffer -mike