summaryrefslogtreecommitdiffstats
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
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.
-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)