summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukasz Stanislawski <l.stanislaws@samsung.com>2018-05-14 10:29:23 +0200
committerLukasz Stanislawski <l.stanislaws@samsung.com>2018-06-12 09:26:37 +0000
commit07ca911e94dac571b063901aa18e218a60945918 (patch)
treedab6ca21ba3afbc0abb313f662899099cc6e0726
parentccfc169cd89d7d31f4a6c3138ce8810013493592 (diff)
downloadttsd-worker-task-07ca911e94dac571b063901aa18e218a60945918.tar.gz
ttsd-worker-task-07ca911e94dac571b063901aa18e218a60945918.tar.bz2
ttsd-worker-task-07ca911e94dac571b063901aa18e218a60945918.zip
Add error checking macros
Process function input argument validation using macros. Change-Id: I8845351b9f114f0d02be4460cd4a418075935727
-rw-r--r--src/err-check.h37
-rw-r--r--src/procfs.c3
2 files changed, 40 insertions, 0 deletions
diff --git a/src/err-check.h b/src/err-check.h
new file mode 100644
index 0000000..2ee8168
--- /dev/null
+++ b/src/err-check.h
@@ -0,0 +1,37 @@
+/*
+* Copyright 2018 Samsung Electronics Co., Ltd
+*
+* Licensed under the Flora License, Version 1.1 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://floralicense.org/license/
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+#ifndef __ERR_CHECK_H__
+#define __ERR_CHECK_H__
+
+#include "log.h"
+
+#define ON_NULL_RETURN_VAL(x, v) do { \
+ if ((x) == NULL) {\
+ ERR(#x" is NULL");\
+ return (v);\
+ }\
+} while (0)
+
+#define ON_TRUE_RETURN_VAL(cond, v) do { \
+ if ((cond)) {\
+ ERR("condition ("#cond") is true");\
+ return (v);\
+ }\
+} while (0)
+
+#endif
+
diff --git a/src/procfs.c b/src/procfs.c
index 4c906db..9a594aa 100644
--- a/src/procfs.c
+++ b/src/procfs.c
@@ -18,6 +18,7 @@
#include "procfs.h"
#include "log.h"
+#include "err-check.h"
#define LOADAVG_FILEPATH "/proc/loadavg"
@@ -25,6 +26,8 @@ int procfs_read_system_load_average(struct procfs_load_average_info *info)
{
float a1, a5, a15;
+ ON_NULL_RETURN_VAL(info, -1);
+
FILE *loadavg_fp = fopen(LOADAVG_FILEPATH, "r");
if (!loadavg_fp) {
ERR("failed to open " LOADAVG_FILEPATH);