Change in libosmocore[master]: logging: use LOGL_NOTICE when no loglevel is set

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

laforge gerrit-no-reply at lists.osmocom.org
Tue May 12 18:09:59 UTC 2020


laforge has submitted this change. ( https://gerrit.osmocom.org/c/libosmocore/+/17604 )

Change subject: logging: use LOGL_NOTICE when no loglevel is set
......................................................................

logging: use LOGL_NOTICE when no loglevel is set

when the API user of libosmocores logging infrastructure does not set a
pre-defined logging level in struct log_info_cat, the result would be an
invalid logging level. In order to avoid problems with that and to spare
all the additional .loglevel = LOGL_NOTICE (API users are advised to use
LOGL_NOTICE as default) lines in the user code lets check the logging
level on startup and set LOGL_NOTICE if there is no logging level set.

Change-Id: Ib9e180261505062505fc4605a98023910f76cde6
Related: OS#2577
---
M src/logging.c
1 file changed, 17 insertions(+), 9 deletions(-)

Approvals:
  Jenkins Builder: Verified
  fixeria: Looks good to me, approved
  laforge: Looks good to me, approved



diff --git a/src/logging.c b/src/logging.c
index 4d6224d..4aaf515 100644
--- a/src/logging.c
+++ b/src/logging.c
@@ -1026,6 +1026,7 @@
 int log_init(const struct log_info *inf, void *ctx)
 {
 	int i;
+	struct log_info_cat *cat_ptr;
 
 	tall_log_ctx = talloc_named_const(ctx, 1, "logging");
 	if (!tall_log_ctx)
@@ -1043,29 +1044,36 @@
 		osmo_log_info->num_cat += inf->num_cat;
 	}
 
-	osmo_log_info->cat = talloc_zero_array(osmo_log_info,
-					struct log_info_cat,
-					osmo_log_info->num_cat);
-	if (!osmo_log_info->cat) {
+	cat_ptr = talloc_zero_array(osmo_log_info, struct log_info_cat,
+				    osmo_log_info->num_cat);
+	if (!cat_ptr) {
 		talloc_free(osmo_log_info);
 		osmo_log_info = NULL;
 		return -ENOMEM;
 	}
 
-	if (inf) { /* copy over the user part */
+	/* copy over the user part and sanitize loglevel */
+	if (inf) {
 		for (i = 0; i < inf->num_cat; i++) {
-			memcpy((struct log_info_cat *) &osmo_log_info->cat[i],
-			       &inf->cat[i], sizeof(struct log_info_cat));
+			memcpy(&cat_ptr[i], &inf->cat[i],
+			       sizeof(struct log_info_cat));
+
+			/* Make sure that the loglevel is set to NOTICE in case
+			 * no loglevel has been preset. */
+			if (!cat_ptr[i].loglevel) {
+				cat_ptr[i].loglevel = LOGL_NOTICE;
+			}
 		}
 	}
 
 	/* copy over the library part */
 	for (i = 0; i < ARRAY_SIZE(internal_cat); i++) {
 		unsigned int cn = osmo_log_info->num_cat_user + i;
-		memcpy((struct log_info_cat *) &osmo_log_info->cat[cn],
-			&internal_cat[i], sizeof(struct log_info_cat));
+		memcpy(&cat_ptr[cn], &internal_cat[i], sizeof(struct log_info_cat));
 	}
 
+	osmo_log_info->cat = cat_ptr;
+
 	return 0;
 }
 

-- 
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/17604
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Change-Id: Ib9e180261505062505fc4605a98023910f76cde6
Gerrit-Change-Number: 17604
Gerrit-PatchSet: 8
Gerrit-Owner: dexter <pmaier at sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: dexter <pmaier at sysmocom.de>
Gerrit-Reviewer: fixeria <axilirator at gmail.com>
Gerrit-Reviewer: laforge <laforge at osmocom.org>
Gerrit-Reviewer: pespin <pespin at sysmocom.de>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20200512/e1e38802/attachment.htm>


More information about the gerrit-log mailing list