summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Bradford <rob@linux.intel.com>2011-10-27 14:30:21 +0100
committerRob Bradford <rob@linux.intel.com>2011-10-27 14:30:21 +0100
commit99e29de22d40c5c9161a0fd28fa2a9c75328386a (patch)
tree15607880afba0611d555ec5d4b5352d0d9960d24
parentf91afe4f3ebcac3fb65a402c6c85cf1df5e2b52a (diff)
downloadxorg-lib-libxkbcommon-99e29de22d40c5c9161a0fd28fa2a9c75328386a.tar.gz
xkbcomp: Copy the string into the buffer rather than updating pointer
Avoids assigning the global pointer to a value that may only have a stack lifetime: Fixes valgrind warnings such as: ==24795== Invalid read of size 1 ==24795== at 0x4A06E9A: strcpy (mc_replace_strmem.c:311) ==24795== by 0x4E54D68: ProcessIncludeFile (misc.c:73) ==24795== by 0x4E59726: HandleIncludeSymbols.constprop.3 (symbols.c:829) ==24795== by 0x4E59D8E: HandleSymbolsFile (symbols.c:1673) ==24795== by 0x4E5A068: CompileSymbols (symbols.c:2211) ==24795== by 0x4E51A61: CompileKeymap (keymap.c:155) ==24795== by 0x4E5B410: xkb_compile_keymap_from_components (xkbcomp.c:236) ==24795== by 0x4E5B587: xkb_compile_keymap_from_rules (xkbcomp.c:161) ==24795== by 0x405ED2: display_create (window.c:2007) ==24795== by 0x403732: main (desktop-shell.c:320) ==24795== Address 0x7fefff0a0 is just below the stack ptr. To suppress, use: --workaround-gcc296-bugs=yes ==24795== ==24795== Source and destination overlap in strcpy(0x7fefff430, 0x7fefff430) ==24795== at 0x4A06F3D: strcpy (mc_replace_strmem.c:311) ==24795== by 0x4E54D68: ProcessIncludeFile (misc.c:73) ==24795== by 0x4E59726: HandleIncludeSymbols.constprop.3 (symbols.c:829) ==24795== by 0x4E59D8E: HandleSymbolsFile (symbols.c:1673) ==24795== by 0x4E5A068: CompileSymbols (symbols.c:2211) ==24795== by 0x4E51A61: CompileKeymap (keymap.c:155) ==24795== by 0x4E5B410: xkb_compile_keymap_from_components (xkbcomp.c:236) ==24795== by 0x4E5B587: xkb_compile_keymap_from_rules (xkbcomp.c:161) ==24795== by 0x405ED2: display_create (window.c:2007) ==24795== by 0x403732: main (desktop-shell.c:320)
-rw-r--r--src/xkbcomp/xkbscan.l3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/xkbcomp/xkbscan.l b/src/xkbcomp/xkbscan.l
index 5ffec1b..bc0a849 100644
--- a/src/xkbcomp/xkbscan.l
+++ b/src/xkbcomp/xkbscan.l
@@ -196,7 +196,8 @@ yyerror(const char *s)
void setScanState(char *file, int lineno)
{
yylineno = 1;
- scanFile = file;
+ strncpy(scanFile, file, 1023);
+ scanFile[1023]='\0';
}
int