avcodec/xbmdec: remove dependancy on zero padding on input packet
authorMichael Niedermayer <michaelni@gmx.at>
Sun, 15 Jun 2014 01:38:50 +0000 (03:38 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Sun, 15 Jun 2014 01:50:30 +0000 (03:50 +0200)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/xbmdec.c

index e03ff31..143e3a2 100644 (file)
@@ -82,10 +82,10 @@ static int xbm_decode_frame(AVCodecContext *avctx, void *data,
         return ret;
 
     // goto start of image data
-    next = ptr + strcspn(ptr, "{");
-    if (!*next)
-        next = ptr + strcspn(ptr, "(");
-    if (!*next)
+    next = memchr(ptr, '{', avpkt->size);
+    if (!next)
+        next = memchr(ptr, '(', avpkt->size);
+    if (!next)
         return AVERROR_INVALIDDATA;
     ptr = next + 1;
 
@@ -95,7 +95,10 @@ static int xbm_decode_frame(AVCodecContext *avctx, void *data,
         for (j = 0; j < linesize; j++) {
             uint8_t val;
 
-            ptr += strcspn(ptr, "x$") + 1;
+            while (ptr < end && *ptr != 'x' && *ptr != '$')
+                ptr++;
+
+            ptr ++;
             if (ptr < end && av_isxdigit(*ptr)) {
                 val = convert(*ptr++);
                 if (av_isxdigit(*ptr))