mirror of
git://git.code.sf.net/p/cdesktopenv/code
synced 2025-03-09 15:50:02 +00:00
dtprintinfo: Fix SIGSEGV in dtprintinfo (passing NULL as first argument to catgets).
Patch from Douglas Mencken <dougmencken@gmail.com>: The issue is that MESSAGE tries to invoke catgets with NULL first parameter, which is dereferenced inside catgets (Std C Library function) without checking, from catgets.c source: if (catalog->name_ptr[idx + 0] == (u_int32_t) set && catalog->name_ptr[idx + 1] == (u_int32_t) message) On the other hand, there's a special value: -1 (cast to nl_catd), which must be used instead of 0 (NULL) in the case when we are unable to provide real catalog_desc, from catgets.c source: /* Be generous if catalog which failed to be open is used. */ if (catalog_desc == (nl_catd) -1 || ++set <= 0 || message < 0) return (char *) string;
This commit is contained in:
parent
1a03c25947
commit
606df517f0
1 changed files with 6 additions and 2 deletions
|
@ -94,14 +94,18 @@ int main(int argc, char **argv)
|
|||
dtprintinfo_cat = catopen("dtprintinfo", 0);
|
||||
#endif
|
||||
|
||||
if ((nl_catd) errno || dtprintinfo_cat == (nl_catd) -1)
|
||||
dtprintinfo_cat = NULL;
|
||||
if ((nl_catd) errno)
|
||||
dtprintinfo_cat = (nl_catd) -1;
|
||||
#ifdef hpux
|
||||
else
|
||||
msg_strings = (char **)calloc(LAST_MSG_NO, sizeof(char *));
|
||||
#endif
|
||||
}
|
||||
|
||||
if (dtprintinfo_cat == NULL) {
|
||||
dtprintinfo_cat = (nl_catd) -1;
|
||||
}
|
||||
|
||||
if (!STRCMP(argv[1], "-help"))
|
||||
{
|
||||
char *output;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue