aboutsummaryrefslogtreecommitdiff
path: root/xkbcomp
diff options
context:
space:
mode:
Diffstat (limited to 'xkbcomp')
-rw-r--r--xkbcomp/xkbcomp.c4
-rw-r--r--xkbcomp/xkbscan.c11
2 files changed, 12 insertions, 3 deletions
diff --git a/xkbcomp/xkbcomp.c b/xkbcomp/xkbcomp.c
index 0dc5bc285..4e00c2ad6 100644
--- a/xkbcomp/xkbcomp.c
+++ b/xkbcomp/xkbcomp.c
@@ -579,8 +579,8 @@ parseArgs(int argc, char *argv[])
if ((i >= (argc - 1)) || (!isdigit(argv[i + 1][0])))
{
warningLevel = 0;
- if (isdigit(argv[i][1]))
- if (sscanf(&argv[i][1], "%i", &itmp) == 1)
+ if (isdigit(argv[i][2]))
+ if (sscanf(&argv[i][2], "%i", &itmp) == 1)
warningLevel = itmp;
}
else
diff --git a/xkbcomp/xkbscan.c b/xkbcomp/xkbscan.c
index 24b1e0f06..4c3fe3228 100644
--- a/xkbcomp/xkbscan.c
+++ b/xkbcomp/xkbscan.c
@@ -401,6 +401,7 @@ static int
yyGetKeyName(void)
{
int ch, i;
+ int last;
i = 0;
while (((ch = scanchar()) != EOF) && (ch != '>'))
@@ -466,12 +467,20 @@ yyGetKeyName(void)
if (i < sizeof(scanBuf) - 1)
scanBuf[i++] = ch;
}
+
+ if (i < sizeof(scanBuf) - i)
+ last = i;
+ else
+ last = sizeof(scanBuf) - 1;
+
+ scanBuf[last] = '\0';
+
if ((ch == '>') && (i < 5))
{
- scanBuf[i++] = '\0';
scanStrLine = lineNum;
return KEYNAME;
}
+
return ERROR_TOK;
}