]> git.saurik.com Git - redis.git/commitdiff
Check seplen and len before malloc'ing "tokens"
authorPieter Noordhuis <pcnoordhuis@gmail.com>
Wed, 27 Apr 2011 12:32:56 +0000 (14:32 +0200)
committerPieter Noordhuis <pcnoordhuis@gmail.com>
Thu, 5 May 2011 14:32:22 +0000 (16:32 +0200)
src/sds.c

index 343ad1fa7fc662ae9641b6da832e9e386199db65..63507000b106e6fefc8a8d099f1f68d9f846afe9 100644 (file)
--- a/src/sds.c
+++ b/src/sds.c
@@ -298,15 +298,17 @@ int sdscmp(sds s1, sds s2) {
  */
 sds *sdssplitlen(char *s, int len, char *sep, int seplen, int *count) {
     int elements = 0, slots = 5, start = 0, j;
+    sds *tokens;
 
-    sds *tokens = zmalloc(sizeof(sds)*slots);
+    if (seplen < 1 || len < 0) return NULL;
+
+    tokens = zmalloc(sizeof(sds)*slots);
 #ifdef SDS_ABORT_ON_OOM
     if (tokens == NULL) sdsOomAbort();
+#else
+    if (tokens == NULL) return NULL;
 #endif
-    if (seplen < 1 || len < 0 || tokens == NULL) {
-        *count = 0;
-        return NULL;
-    }
+
     if (len == 0) {
         *count = 0;
         return tokens;