From 6f0907b6d8034a7547c3cf18876810dac68dc3fe Mon Sep 17 00:00:00 2001 From: vivek Date: Tue, 6 May 2014 15:54:49 +0530 Subject: [PATCH] wcap: Check for mmap and malloc return value in wcap decode module 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 --- wcap/main.c | 4 ++++ wcap/wcap-decode.c | 9 +++++++++ 2 files changed, 13 insertions(+) diff --git a/wcap/main.c b/wcap/main.c index 29bb9c303..16d37f00d 100644 --- a/wcap/main.c +++ b/wcap/main.c @@ -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"); diff --git a/wcap/wcap-decode.c b/wcap/wcap-decode.c index 87d933791..76ecc2f42 100644 --- a/wcap/wcap-decode.c +++ b/wcap/wcap-decode.c @@ -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;