X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ncurses%2Ftinfo%2Fmake_hash.c;h=d5f941825a907f85d9d015f554c2944d9b5efc3d;hp=9274b87713434f338e45c28d4645be46509c5019;hb=d76c9bfec68e0efa6e1b8e95b32b66caf25cfc12;hpb=cdaf29481becd3e1c21baa574ac1ab88ea5f3d38;ds=sidebyside diff --git a/ncurses/tinfo/make_hash.c b/ncurses/tinfo/make_hash.c index 9274b877..d5f94182 100644 --- a/ncurses/tinfo/make_hash.c +++ b/ncurses/tinfo/make_hash.c @@ -43,7 +43,7 @@ #include -MODULE_ID("$Id: make_hash.c,v 1.26 2019/03/10 01:10:15 tom Exp $") +MODULE_ID("$Id: make_hash.c,v 1.28 2019/07/27 23:06:54 tom Exp $") /* * _nc_make_hash_table() @@ -220,18 +220,24 @@ parse_columns(char *buffer) static char * get_type(int type_mask) { - static char result[40]; + static char result[80]; unsigned n; - strcpy(result, L_PAREN); + _nc_STRCPY(result, L_PAREN, sizeof(result)); for (n = 0; n < 3; ++n) { if ((1 << n) & type_mask) { + size_t want = 5 + strlen(typenames[n]); + if (want > sizeof(result)) { + fprintf(stderr, "Buffer is not large enough for %s + %s\n", + result, typenames[n]); + exit(EXIT_FAILURE); + } if (result[1]) - strcat(result, "|"); - strcat(result, "1<<"); - strcat(result, typenames[n]); + _nc_STRCAT(result, "|", sizeof(result)); + _nc_STRCAT(result, "1<<", sizeof(result)); + _nc_STRCAT(result, typenames[n], sizeof(result)); } } - strcat(result, R_PAREN); + _nc_STRCAT(result, R_PAREN, sizeof(result)); return result; }