From b8cd38b2337dcdc4552534c056d383937c371d2e Mon Sep 17 00:00:00 2001 From: Minje Ahn Date: Thu, 13 Jul 2017 18:20:14 +0900 Subject: Add checker for input parameters Change-Id: I79c23b47d4f07615ac064282ec8cf05f9e62297f Signed-off-by: Minje Ahn --- src/common/media-svc-util.c | 30 +++++++++++------------------- 1 file changed, 11 insertions(+), 19 deletions(-) (limited to 'src/common') diff --git a/src/common/media-svc-util.c b/src/common/media-svc-util.c index 5bd98b6..d0d879a 100755 --- a/src/common/media-svc-util.c +++ b/src/common/media-svc-util.c @@ -788,28 +788,20 @@ static int __media_svc_resize_artwork(unsigned char *image, unsigned int size, c static int __media_svc_safe_atoi(char *buffer, int *si) { - char *end; + char *end = NULL; errno = 0; + media_svc_retvm_if(buffer == NULL || si == NULL, MS_MEDIA_ERR_INTERNAL, "invalid parameter"); + const long sl = strtol(buffer, &end, 10); - if (end == buffer) { - media_svc_error("not a decimal number"); - return MS_MEDIA_ERR_INTERNAL; - } else if ('\0' != *end) { - media_svc_error("extra characters at end of input: %s", end); - return MS_MEDIA_ERR_INTERNAL; - } else if ((LONG_MIN == sl || LONG_MAX == sl) && (ERANGE == errno)) { - media_svc_error("out of range of type long"); - return MS_MEDIA_ERR_INTERNAL; - } else if (sl > INT_MAX) { - media_svc_error("greater than INT_MAX"); - return MS_MEDIA_ERR_INTERNAL; - } else if (sl < INT_MIN) { - media_svc_error("less than INT_MIN"); - return MS_MEDIA_ERR_INTERNAL; - } else { - *si = (int)sl; - } + media_svc_retvm_if(end == buffer, MS_MEDIA_ERR_INTERNAL, "not a decimal number"); + media_svc_retvm_if('\0' != *end, MS_MEDIA_ERR_INTERNAL, "extra characters at end of input: %s", end); + media_svc_retvm_if((LONG_MIN == sl || LONG_MAX == sl) && (ERANGE == errno), MS_MEDIA_ERR_INTERNAL, "out of range of type long"); + media_svc_retvm_if(sl > INT_MAX, MS_MEDIA_ERR_INTERNAL, "greater than INT_MAX"); + media_svc_retvm_if(sl < INT_MIN, MS_MEDIA_ERR_INTERNAL, "less than INT_MIN"); + + *si = (int)sl; + return MS_MEDIA_ERR_NONE; } -- cgit v1.2.3