X-Git-Url: http://ncurses.scripts.mit.edu/?a=blobdiff_plain;f=test%2Fpicsmap.c;h=f95747f406f34626acd3707c36e7a2310e244645;hb=22b110664918b4fba48ae4237bafb81621bc5f5b;hp=3c4eb697a4de710a91be75b4e3aa3732bff09dbb;hpb=d61c3c6a831d18ef0ed6f797ac97d60fffc2f158;p=ncurses.git diff --git a/test/picsmap.c b/test/picsmap.c index 3c4eb697..f95747f4 100644 --- a/test/picsmap.c +++ b/test/picsmap.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 2018-2020,2021 Thomas E. Dickey * * Copyright 2017,2018 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,7 +27,7 @@ * authorization. * ****************************************************************************/ /* - * $Id: picsmap.c,v 1.134 2020/07/11 23:01:49 tom Exp $ + * $Id: picsmap.c,v 1.139 2021/05/08 15:56:05 tom Exp $ * * Author: Thomas E. Dickey * @@ -109,7 +109,7 @@ typedef struct { #define debugmsg if (debugging) logmsg #define debugmsg2 if (debugging) logmsg2 -static void cleanup(int) GCC_NORETURN; +static GCC_NORETURN void cleanup(int); static void giveup(const char *fmt, ...) GCC_PRINTFLIKE(1, 2); static void logmsg(const char *fmt, ...) GCC_PRINTFLIKE(1, 2); static void logmsg2(const char *fmt, ...) GCC_PRINTFLIKE(1, 2); @@ -604,7 +604,6 @@ read_palette(const char *filename) continue; } } - s += strlen(s); if (tries & 2) { int len = (int) strlen(filename); @@ -990,7 +989,7 @@ parse_xbm(char **data) { int n; int state = 0; - char buf[BUFSIZ]; + char buf[2048]; int num; char ch; char *s; @@ -1015,7 +1014,7 @@ parse_xbm(char **data) case 0: case 1: case 2: - if (sscanf(s, "#define %s %d%c", buf, &num, &ch) >= 2) { + if (sscanf(s, "#define %1024s %d%c", buf, &num, &ch) >= 2) { if ((t = strstr(buf, "_width")) != 0) { state |= 1; result->wide = (short) bytes_of(num); @@ -1036,7 +1035,7 @@ parse_xbm(char **data) } break; case 3: - if (sscanf(s, "static char %[^_ ]_bits[]%c", buf, &ch) >= 1) { + if (sscanf(s, "static char %1024[^_ ]_bits[]%c", buf, &ch) >= 1) { if (strcmp(result->name, buf)) { goto finish; } @@ -1612,7 +1611,7 @@ report_colors(PICS_HEAD * pics) for (k = 0; k < wide; ++k) { int n = j + (k * high); size_t want = (sizeof(buffer) - (size_t) (s - buffer)); - if (want < 100) + if (want < 100 || want >= sizeof(buffer)) break; if (n >= pics->colors) break;