Add error checking macros 84/180284/7
authorLukasz Stanislawski <l.stanislaws@samsung.com>
Mon, 14 May 2018 08:29:23 +0000 (10:29 +0200)
committerLukasz Stanislawski <l.stanislaws@samsung.com>
Tue, 12 Jun 2018 09:26:37 +0000 (09:26 +0000)
Process function input argument validation using macros.

Change-Id: I8845351b9f114f0d02be4460cd4a418075935727

src/err-check.h [new file with mode: 0644]
src/procfs.c

diff --git a/src/err-check.h b/src/err-check.h
new file mode 100644 (file)
index 0000000..2ee8168
--- /dev/null
@@ -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
+
index 4c906db..9a594aa 100644 (file)
@@ -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);