summaryrefslogtreecommitdiffstats
path: root/parser.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2015-09-10 06:37:55 -0700
committerKaz Kylheku <kaz@kylheku.com>2015-09-10 06:37:55 -0700
commit0f55e4b727694c0c926ef0979f11b438edccc675 (patch)
treef88afc3adb24bb4411a17c397ab9d2e74359e41f /parser.c
parent2860d81328d3a966a1c3a1df013b51404ecc71b9 (diff)
downloadtxr-0f55e4b727694c0c926ef0979f11b438edccc675.tar.gz
txr-0f55e4b727694c0c926ef0979f11b438edccc675.tar.bz2
txr-0f55e4b727694c0c926ef0979f11b438edccc675.zip
Don't pass char to <ctype.h> function.
* parser.c (provide_completions): Cast char argument to unsigned char in call to isalnum. The data comes from user input, which could be any byte. The char type may be signed (and usually is) and so may take on negative values.
Diffstat (limited to 'parser.c')
-rw-r--r--parser.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/parser.c b/parser.c
index c6f030f8..82cdaa21 100644
--- a/parser.c
+++ b/parser.c
@@ -430,7 +430,8 @@ static void provide_completions(const char *data,
if (!ptr)
return;
- while ((isalnum(*ptr) || strchr(gly, *ptr)) && (sym = ptr) && ptr > data)
+ while ((isalnum((unsigned char) *ptr) || strchr(gly, *ptr)) &&
+ (sym = ptr) && ptr > data)
ptr--;
if (!sym)
@@ -444,7 +445,8 @@ static void provide_completions(const char *data,
} else {
ptr--;
- while ((isalnum(*ptr) || strchr(gly, *ptr)) && (pkg = ptr) && ptr > data)
+ while ((isalnum((unsigned char) *ptr) || strchr(gly, *ptr)) &&
+ (pkg = ptr) && ptr > data)
ptr--;
if (!pkg)