aboutsummaryrefslogtreecommitdiffstats
path: root/epan/ftypes
diff options
context:
space:
mode:
authorErika Szelleova <szelleerika@gmail.com>2018-06-16 11:20:12 +0200
committerGuy Harris <guy@alum.mit.edu>2018-06-17 21:16:13 +0000
commitdf9cd64550616283b10a5a9b6a84a7f525171c05 (patch)
treec5d26c50f237fead12a77b3915501c61255597c8 /epan/ftypes
parent21a02e29dee37f25646befd482912cb4be9ed64c (diff)
character constant in dfilter now must fit into one byte
The value of a string in single quotes in dfilter must fit into one byte. The parser correctly parsed the beginning of the string, however it didn't check whether there are more characters to parse. Bug: 14084 Change-Id: Ifa2d7a31052b2c1020d84c42637b9b7afc57d8c0 Reviewed-on: https://code.wireshark.org/review/28298 Reviewed-by: Guy Harris <guy@alum.mit.edu>
Diffstat (limited to 'epan/ftypes')
-rw-r--r--epan/ftypes/ftype-integer.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/epan/ftypes/ftype-integer.c b/epan/ftypes/ftype-integer.c
index 48edda2d5f..9c2255eecd 100644
--- a/epan/ftypes/ftype-integer.c
+++ b/epan/ftypes/ftype-integer.c
@@ -48,7 +48,6 @@ get_sinteger(fvalue_t *fv)
return fv->value.sinteger;
}
-
static gboolean
parse_charconst(const char *s, unsigned long *valuep, gchar **err_msg)
{
@@ -176,13 +175,19 @@ parse_charconst(const char *s, unsigned long *valuep, gchar **err_msg)
}
} else {
value = *cp;
- cp++;
if (!g_ascii_isprint(value)) {
if (err_msg != NULL)
*err_msg = g_strdup_printf("Non-printable character '\\x%02lx' in character constant.", value);
return FALSE;
}
}
+ cp++;
+ if ((*cp != '\'') || (*(cp + 1) != '\0')){
+ if (err_msg != NULL)
+ *err_msg = g_strdup_printf("\"%s\" is too long to be a valid character constant.", s);
+ return FALSE;
+ }
+
*valuep = value;
return TRUE;
}