summaryrefslogtreecommitdiff
path: root/common.c
diff options
context:
space:
mode:
authormrwastl <mrwastl@users.sourceforge.net>2011-06-27 22:24:52 +0200
committermrwastl <mrwastl@users.sourceforge.net>2011-06-27 22:24:52 +0200
commitcba3ba244b99f54393f2faba57d2e0ec64c0f94f (patch)
treeace7465cc3b602a392f6ee78c0e8405312acbed5 /common.c
parent6da1c378c4d57b3bc5d345b5d56e515a831ddd1b (diff)
downloadvdr-plugin-graphlcd-cba3ba244b99f54393f2faba57d2e0ec64c0f94f.tar.gz
vdr-plugin-graphlcd-cba3ba244b99f54393f2faba57d2e0ec64c0f94f.tar.bz2
paranoia mode for strcmp
Diffstat (limited to 'common.c')
-rw-r--r--common.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/common.c b/common.c
index e6c2113..439540d 100644
--- a/common.c
+++ b/common.c
@@ -3,6 +3,7 @@
#include <glcdskin/type.h>
#include <vdr/plugin.h>
+#include <string.h>
#if APIVERSNUM < 10503
#include <locale.h>
@@ -141,3 +142,18 @@ GLCD::cType DurationType(int Index, const std::string &Format)
}
return false;
}
+
+int ParanoiaStrcmp(const char *s1, const char *s2)
+{
+ if (! s1 || ! s2)
+ return -1;
+
+ // s1 must be under 'our' control (and thus valid), s2 may be a string w/ unexpected content
+ size_t n = strlen(s1);
+
+ int rv = strncmp(s1, s2, n);
+ if (rv == 0)
+ return (s2[n] == '\0') ? 0 : -1;
+ else
+ return rv;
+}