X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ncurses%2Ftinfo%2Fmake_hash.c;h=99e4bd4fbd781eb813760ef975d3616bc7e73bea;hp=15c281def50c94746857e83fb70bb64209f0d07e;hb=8554ac8f8bb70116fbc962f529168d273e950e2b;hpb=a2ea66477b08cf07200cf7c319447d61d1360d85;ds=sidebyside diff --git a/ncurses/tinfo/make_hash.c b/ncurses/tinfo/make_hash.c index 15c281de..99e4bd4f 100644 --- a/ncurses/tinfo/make_hash.c +++ b/ncurses/tinfo/make_hash.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * * copy of this software and associated documentation files (the * @@ -44,7 +44,7 @@ #include -MODULE_ID("$Id: make_hash.c,v 1.3 2010/05/22 18:02:50 tom Exp $") +MODULE_ID("$Id: make_hash.c,v 1.9 2012/11/18 01:30:03 tom Exp $") /* * _nc_make_hash_table() @@ -119,6 +119,18 @@ _nc_make_hash_table(struct name_table_entry *table, #define MAX_COLUMNS BUFSIZ /* this _has_ to be worst-case */ +static int +count_columns(char **list) +{ + int result = 0; + if (list != 0) { + while (*list++) { + ++result; + } + } + return result; +} + static char ** parse_columns(char *buffer) { @@ -201,6 +213,13 @@ main(int argc, char **argv) list = parse_columns(buffer); if (list == 0) /* blank or comment */ continue; + if (column > count_columns(list)) { + fprintf(stderr, "expected %d columns, have %d:\n%s\n", + column, + count_columns(list), + buffer); + exit(EXIT_FAILURE); + } name_table[n].nte_link = -1; /* end-of-hash */ name_table[n].nte_name = strdup(list[column]); if (!strcmp(list[2], "bool")) { @@ -261,8 +280,8 @@ main(int argc, char **argv) root_name); printf("{\n"); for (n = 0; n < CAPTABSIZE; n++) { - sprintf(buffer, "\"%s\"", - name_table[n].nte_name); + _nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer)) "\"%s\"", + name_table[n].nte_name); printf("\t{ %15s,\t%10s,\t%3d, %3d }%c\n", buffer, typenames[name_table[n].nte_type],