diff options
author | Minje Ahn <minje.ahn@samsung.com> | 2017-07-13 18:20:14 +0900 |
---|---|---|
committer | Minje Ahn <minje.ahn@samsung.com> | 2017-07-13 18:20:14 +0900 |
commit | b8cd38b2337dcdc4552534c056d383937c371d2e (patch) | |
tree | 64d41c5f9fcbe8f8ae64956f83ce5d2fb6483e73 /src/common | |
parent | 92a1ee31690fcf346ed703874cdbf489cf6c3897 (diff) | |
download | libmedia-service-b8cd38b2337dcdc4552534c056d383937c371d2e.tar.gz libmedia-service-b8cd38b2337dcdc4552534c056d383937c371d2e.tar.bz2 libmedia-service-b8cd38b2337dcdc4552534c056d383937c371d2e.zip |
Add checker for input parameterssubmit/tizen/20170714.003836accepted/tizen/unified/20170717.170046
Change-Id: I79c23b47d4f07615ac064282ec8cf05f9e62297f
Signed-off-by: Minje Ahn <minje.ahn@samsung.com>
Diffstat (limited to 'src/common')
-rwxr-xr-x | src/common/media-svc-util.c | 30 |
1 files changed, 11 insertions, 19 deletions
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; } |