wcap: Check for mmap and malloc return value in wcap decode module
authorvivek <vivek.ellur@samsung.com>
Tue, 6 May 2014 10:24:49 +0000 (15:54 +0530)
committerKristian Høgsberg <krh@bitplanet.net>
Tue, 6 May 2014 22:21:27 +0000 (15:21 -0700)
Checking for return value in main.c for wcap_decoder_create function
and mmap, malloc return value in wcap_decoder_create function to avoid
crashes

Signed-off-by: vivek <vivek.ellur@samsung.com>
wcap/main.c
wcap/wcap-decode.c

index 29bb9c3..16d37f0 100644 (file)
@@ -251,6 +251,10 @@ int main(int argc, char *argv[])
        }
 
        decoder = wcap_decoder_create(argv[1]);
+       if (decoder == NULL) {
+               fprintf(stderr, "Creating wcap decoder failed\n");
+               exit(EXIT_FAILURE);
+       }
 
        if (yuv4mpeg2 && isatty(1)) {
                fprintf(stderr, "Not dumping yuv4mpeg2 data to terminal.  Pipe output to a file or a process.\n");
index 87d9337..76ecc2f 100644 (file)
@@ -126,6 +126,11 @@ wcap_decoder_create(const char *filename)
        decoder->size = buf.st_size;
        decoder->map = mmap(NULL, decoder->size,
                            PROT_READ, MAP_PRIVATE, decoder->fd, 0);
+       if (decoder->map == MAP_FAILED) {
+               fprintf(stderr, "mmap failed\n");
+               free(decoder);
+               return NULL;
+       }
                
        header = decoder->map;
        decoder->format = header->format;
@@ -137,6 +142,10 @@ wcap_decoder_create(const char *filename)
 
        frame_size = header->width * header->height * 4;
        decoder->frame = malloc(frame_size);
+       if (decoder->frame == NULL) {
+               free(decoder);
+               return NULL;
+       }
        memset(decoder->frame, 0, frame_size);
 
        return decoder;