laforge has submitted this change. ( https://gerrit.osmocom.org/c/libgtpnl/+/26990 )
Change subject: fix some cases of rc == 0 on error
......................................................................
fix some cases of rc == 0 on error
When genl_socket_talk() fails, return rc != 0.
While testing the new osmo-upf program, I noticed that I failed to get a
"Operation not permitted" error when forgetting to set cap_net_admin on
the osmo-upf binary. It looked like everything should work, but doesn't.
It is possible to catch these error cases without this patch, by
monitoring errno. That may well be the intention of the API? I'm still
submitting this patch because it seems better to return rc != 0.
Here is a code example that also catches all error cases without this
patch:
errno = 0;
rc = gtp_add_tunnel(genl_id, nl, t);
if (errno) {
rc = -errno;
} else if (rc) {
rc = -EINVAL;
} else {
tun->active = true;
}
return rc;
Related: SYS#5599
Change-Id: I22fd69709e023572c6c616a4184340a554456faf
---
M src/gtp-genl.c
1 file changed, 7 insertions(+), 3 deletions(-)
Approvals:
Jenkins Builder: Verified
laforge: Looks good to me, approved
diff --git a/src/gtp-genl.c b/src/gtp-genl.c
index f12f872..b8edc72 100644
--- a/src/gtp-genl.c
+++ b/src/gtp-genl.c
@@ -77,8 +77,10 @@
GTP_CMD_NEWPDP);
gtp_build_payload(nlh, t);
- if (genl_socket_talk(nl, nlh, seq, NULL, NULL) < 0)
+ if (genl_socket_talk(nl, nlh, seq, NULL, NULL) < 0) {
perror("genl_socket_talk");
+ return -1;
+ }
return 0;
}
@@ -94,8 +96,10 @@
GTP_CMD_DELPDP);
gtp_build_payload(nlh, t);
- if (genl_socket_talk(nl, nlh, seq, NULL, NULL) < 0)
+ if (genl_socket_talk(nl, nlh, seq, NULL, NULL) < 0) {
perror("genl_socket_talk");
+ return -1;
+ }
return 0;
}
@@ -200,7 +204,7 @@
if (genl_socket_talk(nl, nlh, seq, genl_gtp_attr_cb, NULL) < 0) {
perror("genl_socket_talk");
- return 0;
+ return -1;
}
return 0;
--
To view, visit https://gerrit.osmocom.org/c/libgtpnl/+/26990
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: libgtpnl
Gerrit-Branch: master
Gerrit-Change-Id: I22fd69709e023572c6c616a4184340a554456faf
Gerrit-Change-Number: 26990
Gerrit-PatchSet: 2
Gerrit-Owner: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pablo <pablo(a)gnumonks.org>
Gerrit-CC: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: merged