From: Matthieu C. <ma...@us...> - 2003-08-29 11:18:27
|
Update of /cvsroot/libexif/libmnote/libmnote/canon In directory sc8-pr-cvs1:/tmp/cvs-serv19184/libmnote/canon Modified Files: mnote-canon-data.c mnote-canon-entry.c Log Message: More sanity check Index: mnote-canon-data.c =================================================================== RCS file: /cvsroot/libexif/libmnote/libmnote/canon/mnote-canon-data.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- mnote-canon-data.c 28 Aug 2003 15:43:50 -0000 1.6 +++ mnote-canon-data.c 29 Aug 2003 11:18:21 -0000 1.7 @@ -235,6 +235,10 @@ #endif d+=2; size-=2; + + if ( 12 * n > size ) + return; + for (i = 0; i < n; i++) { tag = exif_get_short (d + 12 * i, order); Index: mnote-canon-entry.c =================================================================== RCS file: /cvsroot/libexif/libmnote/libmnote/canon/mnote-canon-entry.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- mnote-canon-entry.c 28 Aug 2003 15:43:50 -0000 1.6 +++ mnote-canon-entry.c 29 Aug 2003 11:18:21 -0000 1.7 @@ -175,13 +175,12 @@ switch (entry->tag) { case MNOTE_CANON_TAG_SETTINGS_1: CF (entry->format, EXIF_FORMAT_SHORT, v); - n = exif_get_short (data, order); + n = exif_get_short (data, order)/2; data+=2; + CC (entry->components, n, v); #ifdef DEBUG printf ("Setting1 size %d %d\n",n,entry->size); #endif - n=((entry->size>n)?n:entry->size)/2;//sanity check - for (i=1;i<n;i++) { vs = exif_get_short (data, order); @@ -539,13 +538,12 @@ case MNOTE_CANON_TAG_SETTINGS_2: CF (entry->format, EXIF_FORMAT_SHORT, v); - n = exif_get_short (data, order); + n = exif_get_short (data, order)/2; data += 2; + CC (entry->components, n, v); #ifdef DEBUG printf ("Setting2 size %d %d\n",n,entry->size); #endif - n=((entry->size>n)?n:entry->size)/2;//sanity check - for (i=1;i<n;i++) { vs = exif_get_short (data, order); @@ -654,12 +652,12 @@ case MNOTE_CANON_TAG_CUSTOM_FUNCS: CF (entry->format, EXIF_FORMAT_SHORT, v); - n = exif_get_short (data, order); + n = exif_get_short (data, order)/2; data+=2; + CC (entry->components, n, v); #ifdef DEBUG printf ("Custom Function size %d %d\n",n,entry->size); #endif - n=((entry->size>n)?n:entry->size)/2;//sanity check for (i=1;i<n;i++) { vs = exif_get_short (data, order); |