summaryrefslogtreecommitdiffstats
path: root/libaf
diff options
context:
space:
mode:
Diffstat (limited to 'libaf')
-rw-r--r--libaf/format.c7
-rw-r--r--libaf/format.h2
2 files changed, 8 insertions, 1 deletions
diff --git a/libaf/format.c b/libaf/format.c
index ffdf435e71..88d66522a0 100644
--- a/libaf/format.c
+++ b/libaf/format.c
@@ -112,12 +112,17 @@ const char *af_fmt2str_short(int format)
return "??";
}
+static bool af_fmt_valid(int format)
+{
+ return (format & AF_FORMAT_MASK) == format;
+}
+
int af_str2fmt_short(bstr str)
{
if (bstr_startswith0(str, "0x")) {
bstr rest;
int fmt = bstrtoll(str, &rest, 16);
- if (rest.len == 0)
+ if (rest.len == 0 && af_fmt_valid(fmt))
return fmt;
}
diff --git a/libaf/format.h b/libaf/format.h
index 36f5c3fb59..e60c0789b9 100644
--- a/libaf/format.h
+++ b/libaf/format.h
@@ -66,6 +66,8 @@
#define AF_FORMAT_IEC61937 (6<<6)
#define AF_FORMAT_SPECIAL_MASK (7<<6)
+#define AF_FORMAT_MASK ((1<<9)-1)
+
// PREDEFINED formats
#define AF_FORMAT_U8 (AF_FORMAT_I|AF_FORMAT_US|AF_FORMAT_8BIT|AF_FORMAT_NE)