? README Index: patches/patch-libgputils_gparchive_c =================================================================== RCS file: /cvs/OpenBSD/ports/devel/gputils/patches/patch-libgputils_gparchive_c,v retrieving revision 1.3 diff -u -r1.3 patch-libgputils_gparchive_c --- patches/patch-libgputils_gparchive_c 30 Jan 2004 01:01:11 -0000 1.3 +++ patches/patch-libgputils_gparchive_c 14 Feb 2004 23:26:30 -0000 @@ -1,34 +1,37 @@ $OpenBSD: patch-libgputils_gparchive_c,v 1.3 2004/01/30 01:01:11 naddy Exp $ --- libgputils/gparchive.c.orig 2004-01-09 19:10:37.000000000 +1100 -+++ libgputils/gparchive.c 2004-01-25 20:36:31.000000000 +1100 -@@ -50,7 +50,7 @@ gp_archive_member_name(gp_archive_type * ++++ libgputils/gparchive.c 2004-02-15 10:25:06.000000000 +1100 +@@ -50,7 +50,8 @@ gp_archive_member_name(gp_archive_type * char name[256]; char *end; - sscanf(archive->header.ar_name, "%s/", name); -+ sscanf(archive->header.ar_name, "%256s/", name); ++ COMPILE_TIME_ASSERT(255 == sizeof(name)-1); ++ sscanf(archive->header.ar_name, "%255s/", name); end = strchr(&name[0], '/'); if (end != NULL) *end = '\0'; -@@ -73,7 +73,7 @@ gp_archive_list_members(gp_archive_type +@@ -73,7 +74,8 @@ gp_archive_list_members(gp_archive_type archive = archive->next; while (archive != NULL) { - sscanf(archive->header.ar_name, "%s/", name); -+ sscanf(archive->header.ar_name, "%256s/", name); ++ COMPILE_TIME_ASSERT(255 == sizeof(name)-1); ++ sscanf(archive->header.ar_name, "%255s/", name); sscanf(archive->header.ar_date, "%il", &date); sscanf(archive->header.ar_size, "%il", &size); end = strchr(&name[0], '/'); -@@ -99,7 +99,7 @@ gp_archive_find_member(gp_archive_type * +@@ -99,7 +101,8 @@ gp_archive_find_member(gp_archive_type * archive = archive->next; while (archive != NULL) { - sscanf(archive->header.ar_name, "%s/", name); -+ sscanf(archive->header.ar_name, "%256s/", name); ++ COMPILE_TIME_ASSERT(255 == sizeof(name)-1); ++ sscanf(archive->header.ar_name, "%255s/", name); end = strrchr(&name[0], '/'); if (end != NULL) *end = '\0'; -@@ -183,16 +183,16 @@ gp_archive_add_member(gp_archive_type *a +@@ -183,16 +186,16 @@ gp_archive_add_member(gp_archive_type *a timer = (int)time(NULL); @@ -52,7 +55,7 @@ oldmember = gp_archive_find_member(archive, objectname); -@@ -231,9 +231,9 @@ gp_archive_extract_member(gp_archive_typ +@@ -231,9 +234,9 @@ gp_archive_extract_member(gp_archive_typ /* if the object doesn't have an extension, add one. This is done for some libs generated with other tools. It should not be necessary for libs generated by gplib. */ @@ -64,16 +67,17 @@ output_file = fopen(filename, "wb"); if (output_file == NULL) { -@@ -413,7 +413,7 @@ gp_archive_make_index(gp_archive_type *a +@@ -413,7 +416,8 @@ gp_archive_make_index(gp_archive_type *a archive = archive->next; while (archive != NULL) { - sscanf(archive->header.ar_name, "%s/", name); -+ sscanf(archive->header.ar_name, "%256s/", name); ++ COMPILE_TIME_ASSERT(255 == sizeof(name)-1); ++ sscanf(archive->header.ar_name, "%255s/", name); end = strchr(&name[0], '/'); if (end != NULL) *end = '\0'; -@@ -461,17 +461,25 @@ gp_archive_add_index(struct symbol_table +@@ -461,17 +465,25 @@ gp_archive_add_index(struct symbol_table /* create a new member for the index and place it in the archive */ newmember = (gp_archive_type *)malloc(sizeof(*newmember)); @@ -102,7 +106,7 @@ newmember->next = archive; archive = newmember; -@@ -494,8 +502,10 @@ gp_archive_add_index(struct symbol_table +@@ -494,8 +506,10 @@ gp_archive_add_index(struct symbol_table /* write the symbol names to the member */ for (i = 0; i < table->count; i++) { @@ -115,12 +119,13 @@ } return archive; -@@ -602,7 +612,7 @@ gp_archive_print_table(struct symbol_tab +@@ -602,7 +616,8 @@ gp_archive_print_table(struct symbol_tab member = get_symbol_annotation(lst[i]); assert(member != NULL); /* determine the archive member name */ - sscanf(member->header.ar_name, "%s/", name); -+ sscanf(member->header.ar_name, "%256s/", name); ++ COMPILE_TIME_ASSERT(255 == sizeof(name)-1); ++ sscanf(member->header.ar_name, "%255s/", name); end = strchr(&name[0], '/'); if (end != NULL) *end = '\0'; Index: patches/patch-libgputils_libgputils_h =================================================================== RCS file: patches/patch-libgputils_libgputils_h diff -N patches/patch-libgputils_libgputils_h --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-libgputils_libgputils_h 14 Feb 2004 23:26:30 -0000 @@ -0,0 +1,12 @@ +$OpenBSD$ +--- libgputils/libgputils.h.orig 2004-02-15 10:22:40.000000000 +1100 ++++ libgputils/libgputils.h 2004-02-15 10:23:37.000000000 +1100 +@@ -47,4 +47,8 @@ Boston, MA 02111-1307, USA. */ + /* COD files */ + #include + ++#ifndef COMPILE_TIME_ASSERT ++#define COMPILE_TIME_ASSERT(e) do { typedef char COMPILE_TIME_ASSERTION_FAILURE[ (e) ? 1 : -1 ]; } while(0) ++#endif ++ + #endif