[Open-scap] Code cleanups

Steve Grubb sgrubb at redhat.com
Sun Aug 14 16:33:40 UTC 2011


Hi,

The following patch does the following:

* cleans up missing va_end calls
* adds format check for SEXP_string_newf_r
* Handles negative return for read in environ58 test
* fixes a couple spelling mistakes.

-Steve


diff --git a/src/OVAL/oval_probe_ext.c b/src/OVAL/oval_probe_ext.c
index 61ef9f4..e98e04d 100644
--- a/src/OVAL/oval_probe_ext.c
+++ b/src/OVAL/oval_probe_ext.c
@@ -815,8 +815,10 @@ int oval_probe_sys_handler(oval_subtype_t type, void *ptr, int act, ...)
                 pd  = oval_pdtbl_get(pext->pdtbl, type);
 
                 if (pd == NULL) {
-                        if (oval_probe_sys_handler(type, ptr, PROBE_HANDLER_ACT_OPEN) != 0)
+                        if (oval_probe_sys_handler(type, ptr, PROBE_HANDLER_ACT_OPEN) != 0) {
+				va_end(ap);
                                 return(-1);
+			}
 
                         pd = oval_pdtbl_get(pext->pdtbl, type);
                 }
@@ -908,7 +910,7 @@ int oval_probe_ext_handler(oval_subtype_t type, void *ptr, int act, ...)
 			if (probe_dsc == NULL) {
 				oval_syschar_add_new_message(sys, "OVAL object not supported", OVAL_MESSAGE_LEVEL_WARNING);
 				oval_syschar_set_flag(sys, SYSCHAR_FLAG_NOT_COLLECTED);
-
+				va_end(ap);
 				return (1);
 			}
 
@@ -918,7 +920,7 @@ int oval_probe_ext_handler(oval_subtype_t type, void *ptr, int act, ...)
                         if (probe_urilen >= sizeof probe_uri) {
                                 snprintf (errmsg, sizeof errmsg, "probe URI too long");
                                 oscap_seterr (OSCAP_EFAMILY_GLIBC, ENAMETOOLONG, errmsg);
-
+				va_end(ap);
                                 return (-1);
                         }
 
@@ -927,7 +929,7 @@ int oval_probe_ext_handler(oval_subtype_t type, void *ptr, int act, ...)
                         if (oval_pdtbl_add(pext->pdtbl, oval_object_get_subtype(obj), -1, probe_uri) != 0) {
 				oval_syschar_add_new_message(sys, "OVAL object not supported", OVAL_MESSAGE_LEVEL_WARNING);
 				oval_syschar_set_flag(sys, SYSCHAR_FLAG_NOT_COLLECTED);
-
+				va_end(ap);
                                 return (1);
 			}
 
@@ -935,6 +937,7 @@ int oval_probe_ext_handler(oval_subtype_t type, void *ptr, int act, ...)
 
                         if (pd == NULL) {
                                 oscap_seterr (OSCAP_EFAMILY_OVAL, OVAL_EOVALINT, "internal error");
+				va_end(ap);
                                 return (-1);
                         }
                 }
@@ -961,6 +964,7 @@ int oval_probe_ext_handler(oval_subtype_t type, void *ptr, int act, ...)
 			}
 		}
 
+		va_end(ap);
 		return ret;
         }
         case PROBE_HANDLER_ACT_OPEN:
@@ -992,10 +996,13 @@ int oval_probe_ext_handler(oval_subtype_t type, void *ptr, int act, ...)
 				else
 					ret = oval_probe_ext_abort(pext->pdtbl->ctx, pd, pext);
 
-				if (ret != 0)
+				if (ret != 0) {
+					va_end(ap);
 					return (ret);
+				}
                         }
 
+			va_end(ap);
                         return(0);
                 } else {
                         /*
@@ -1003,7 +1010,8 @@ int oval_probe_ext_handler(oval_subtype_t type, void *ptr, int act, ...)
                          */
                         pd = oval_pdtbl_get(pext->pdtbl, type);
 
-                        if (pd == NULL)
+			va_end(ap);
+                        if (pd == NULL) 
                                 return(0);
 
 			if (act == PROBE_HANDLER_ACT_RESET)
diff --git a/src/OVAL/probes/SEAP/public/sexp-manip_r.h b/src/OVAL/probes/SEAP/public/sexp-manip_r.h
index fb980fe..e304368 100644
--- a/src/OVAL/probes/SEAP/public/sexp-manip_r.h
+++ b/src/OVAL/probes/SEAP/public/sexp-manip_r.h
@@ -33,6 +33,13 @@
 extern "C" {
 #endif
 
+#if     __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)
+#define _GNUC_PRINTF( format_idx, arg_idx )    \
+  __attribute__((__format__ (__printf__, format_idx, arg_idx)))
+#else   /* !__GNUC__ */
+#define _GNUC_PRINTF( format_idx, arg_idx )
+#endif  /* __GNUC__ */
+
 SEXP_t *SEXP_init(SEXP_t *sexp_mem);
 
 SEXP_t *SEXP_number_newb_r(SEXP_t *sexp_mem, bool n);
@@ -44,7 +51,7 @@ SEXP_t *SEXP_number_newi_64_r(SEXP_t *sexp_mem, int64_t n);
 SEXP_t *SEXP_number_newf_r(SEXP_t *sexp_mem, double n);
 
 SEXP_t *SEXP_string_new_r(SEXP_t *sexp_mem, const void *string, size_t length);
-SEXP_t *SEXP_string_newf_r(SEXP_t *sexp_mem, const char *format, ...);
+SEXP_t *SEXP_string_newf_r(SEXP_t *sexp_mem, const char *format, ...) _GNUC_PRINTF (2,3);
 SEXP_t *SEXP_string_newf_rv(SEXP_t *sexp_mem, const char *format, va_list ap);
 
 SEXP_t *SEXP_list_new_rv(SEXP_t *sexp_mem, SEXP_t *memb, va_list alist);
diff --git a/src/OVAL/probes/independent/environmentvariable58.c b/src/OVAL/probes/independent/environmentvariable58.c
index cb679a2..95d32f5 100644
--- a/src/OVAL/probes/independent/environmentvariable58.c
+++ b/src/OVAL/probes/independent/environmentvariable58.c
@@ -118,6 +118,9 @@ static int read_environment(SEXP_t *pid_ent, SEXP_t *name_ent, probe_ctx *ctx)
 
 		if ((read_size = read(fd, buffer, buffer_size - 1)) > 0) {
 			empty = 0;
+		} else {
+			close(fd);
+			return err;
 		}
 
 		buffer[buffer_size - 1] = 0;
diff --git a/src/OVAL/probes/probe-api.c b/src/OVAL/probes/probe-api.c
index 07b4f05..63063e3 100644
--- a/src/OVAL/probes/probe-api.c
+++ b/src/OVAL/probes/probe-api.c
@@ -395,6 +395,7 @@ SEXP_t *probe_obj_creat(const char *name, SEXP_t * attrs, ...)
 		name = va_arg(ap, const char *);
 	}
 
+	va_end(ap);
 	return (obj);
 }
 
diff --git a/src/OVAL/probes/public/probe-api.h b/src/OVAL/probes/public/probe-api.h
index 1db6fa5..ef4cdbb 100644
--- a/src/OVAL/probes/public/probe-api.h
+++ b/src/OVAL/probes/public/probe-api.h
@@ -73,7 +73,7 @@
  */
 
 /**
- * Build a new item according to the scpecified format.
+ * Build a new item according to the specified format.
  * @param fmt the desired format
  */
 SEXP_t *probe_item_build(const char *fmt, ...);
@@ -172,7 +172,7 @@ SEXP_t *probe_attr_creat(const char *name, const SEXP_t * val, ...);
  */
 
 /**
- * Build a new object according to the scpecified format.
+ * Build a new object according to the specified format.
  * @param fmt the desired format
  */
 SEXP_t *probe_obj_build(const char *fmt, ...);




More information about the Open-scap-list mailing list