From: John Crispin Date: Wed, 3 Jan 2018 10:52:56 +0000 (+0100) Subject: fix invalid close() call X-Git-Url: https://git.archive.openwrt.org/?a=commitdiff_plain;h=d57907c2b30170bdab7d59a4fad6e514f1861bbb;hp=5f87f5480ebf004d735dbf44259d08cf8affd305;p=project%2Fubus.git fix invalid close() call valgrind complained about this one ==18632== Warning: invalid file descriptor -1 in syscall close() ==18632== at 0x5326D20: __close_nocancel (syscall-template.S:84) ==18632== by 0x5046C02: ubus_process_invoke (libubus-obj.c:98) ==18632== by 0x5046DC3: ubus_process_obj_msg (libubus-obj.c:142) ==18632== by 0x5045E98: ubus_process_msg (libubus.c:106) ==18632== by 0x50468D0: ubus_handle_data (libubus-io.c:314) ==18632== by 0x4E3D125: uloop_run_events (uloop.c:198) ==18632== by 0x4E3D125: uloop_run_timeout (uloop.c:555) ==18632== by 0x109BEF: uloop_run (uloop.h:111) ==18632== by 0x109BEF: main (main.c:25) Signed-off-by: John Crispin --- diff --git a/libubus-obj.c b/libubus-obj.c index 9261b83..b301965 100644 --- a/libubus-obj.c +++ b/libubus-obj.c @@ -95,7 +95,8 @@ found: ret = obj->methods[method].handler(ctx, obj, &req, blob_data(attrbuf[UBUS_ATTR_METHOD]), attrbuf[UBUS_ATTR_DATA]); - close(req.req_fd); + if (req.req_fd >= 0) + close(req.req_fd); if (req.deferred || no_reply) return;