From: Peter Johnson Date: Sat, 3 Dec 2005 18:04:59 +0000 (-0000) Subject: Avoid crash in section_switch for a number of object formats. X-Git-Tag: v0.5.0rc1~55 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1617ea46710fe861a8734a9a4497add38a42c725;p=yasm Avoid crash in section_switch for a number of object formats. Noticed by: Catalin Ionescu svn path=/trunk/yasm/; revision=1323 --- diff --git a/modules/objfmts/bin/bin-objfmt.c b/modules/objfmts/bin/bin-objfmt.c index fe5cdc78..d2781c54 100644 --- a/modules/objfmts/bin/bin-objfmt.c +++ b/modules/objfmts/bin/bin-objfmt.c @@ -372,6 +372,12 @@ bin_objfmt_section_switch(yasm_objfmt *objfmt, yasm_valparamhead *valparams, /* Check for ALIGN qualifier */ while ((vp = yasm_vps_next(vp))) { + if (!vp->val) { + yasm__warning(YASM_WARN_GENERAL, line, + N_("Unrecognized numeric qualifier")); + continue; + } + if (yasm__strcasecmp(vp->val, "align") == 0 && vp->param) { /*@dependent@*/ /*@null@*/ const yasm_intnum *align_expr; unsigned long bitcnt; diff --git a/modules/objfmts/coff/coff-objfmt.c b/modules/objfmts/coff/coff-objfmt.c index aa335fdb..4aa17b54 100644 --- a/modules/objfmts/coff/coff-objfmt.c +++ b/modules/objfmts/coff/coff-objfmt.c @@ -1204,6 +1204,12 @@ coff_objfmt_section_switch(yasm_objfmt *objfmt, yasm_valparamhead *valparams, win32warn = 0; + if (!vp->val) { + yasm__warning(YASM_WARN_GENERAL, line, + N_("Unrecognized numeric qualifier")); + continue; + } + match = 0; for (i=0; ival, flagquals[i].name) == 0) { diff --git a/modules/objfmts/elf/elf-objfmt.c b/modules/objfmts/elf/elf-objfmt.c index 8fd9f81c..15bffadd 100644 --- a/modules/objfmts/elf/elf-objfmt.c +++ b/modules/objfmts/elf/elf-objfmt.c @@ -783,6 +783,12 @@ elf_objfmt_section_switch(yasm_objfmt *objfmt, yasm_valparamhead *valparams, size_t i; int match; + if (!vp->val) { + yasm__warning(YASM_WARN_GENERAL, line, + N_("Unrecognized numeric qualifier")); + continue; + } + match = 0; for (i=0; ival, flagquals[i].name) == 0) { diff --git a/modules/objfmts/xdf/xdf-objfmt.c b/modules/objfmts/xdf/xdf-objfmt.c index 44d68ebe..737adf33 100644 --- a/modules/objfmts/xdf/xdf-objfmt.c +++ b/modules/objfmts/xdf/xdf-objfmt.c @@ -675,6 +675,12 @@ xdf_objfmt_section_switch(yasm_objfmt *objfmt, yasm_valparamhead *valparams, sectname = vp->val; while ((vp = yasm_vps_next(vp))) { + if (!vp->val) { + yasm__warning(YASM_WARN_GENERAL, line, + N_("Unrecognized numeric qualifier")); + continue; + } + flags_override = 1; if (yasm__strcasecmp(vp->val, "use16") == 0) { flags &= ~(XDF_SECT_USE_32|XDF_SECT_USE_64);