From: J?rg H. <ho...@us...> - 2004-05-16 13:48:38
|
Update of /cvsroot/libexif/libexif/libexif In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32649 Modified Files: exif-data.c Log Message: added error handling on malloc/realloc Index: exif-data.c =================================================================== RCS file: /cvsroot/libexif/libexif/libexif/exif-data.c,v retrieving revision 1.41 retrieving revision 1.42 diff -u -d -r1.41 -r1.42 --- exif-data.c 15 May 2004 20:29:19 -0000 1.41 +++ exif-data.c 16 May 2004 13:48:29 -0000 1.42 @@ -183,7 +183,9 @@ if (s > 4) { doff = *ds - 6; *ds += s; - *d = realloc (*d, sizeof (char) * *ds); + *d = realloc (*d, *ds); + if (!*d) + return; exif_set_long (*d + 6 + offset + 8, data->priv->order, doff); } else @@ -208,7 +210,9 @@ if (data->data) free (data->data); data->size = size; - data->data = malloc (sizeof (char) * data->size); + data->data = malloc (data->size); + if (!data->data) + return; memcpy (data->data, d + offset, data->size); } @@ -355,7 +359,9 @@ * and the number of entries. */ *ds += (2 + (ifd->count + n_ptr + n_thumb) * 12 + 4); - *d = realloc (*d, sizeof (char) * *ds); + *d = realloc (*d, *ds); + if (!*d) + return; /* Save the number of entries */ exif_set_short (*d + 6 + offset, data->priv->order, @@ -454,7 +460,9 @@ exif_set_long (*d + 6 + offset + 8, data->priv->order, *ds - 6); *ds += data->size; - *d = realloc (*d, sizeof (char) * *ds); + *d = realloc (*d, *ds); + if (!*d) + return; memcpy (*d + *ds - data->size, data->data, data->size); offset += 12; #ifdef DEBUG @@ -707,6 +715,8 @@ /* Header */ *ds = 14; *d = malloc (*ds); + if (!*d) + return; memcpy (*d, ExifHeader, 6); /* Order (offset 6) */ |