From: Andrew Bartlett Date: Mon, 11 Nov 2019 00:53:33 +0000 (+1300) Subject: librpc: Use the fact that file_save() now uses O_EXCL in dcerpc_log_packet() X-Git-Tag: talloc-2.3.1~5 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f1fa0d3b9dfef17a5129b53695fa454f1a8b8b68;p=thirdparty%2Fsamba.git librpc: Use the fact that file_save() now uses O_EXCL in dcerpc_log_packet() This avoids a race with file_exist() and demostrates a better way to use this function. Signed-off-by: Andrew Bartlett Reviewed-by: Andreas Schneider Autobuild-User(master): Andreas Schneider Autobuild-Date(master): Fri Nov 15 18:48:27 UTC 2019 on sn-devel-184 --- diff --git a/librpc/rpc/dcerpc_util.c b/librpc/rpc/dcerpc_util.c index 01dc2e7061d..1fb3fa72075 100644 --- a/librpc/rpc/dcerpc_util.c +++ b/librpc/rpc/dcerpc_util.c @@ -1425,19 +1425,19 @@ void dcerpc_log_packet(const char *lockdir, for (i=0;iname, opnum, i, (flags&NDR_IN)?"in":"out"); if (ret == -1) { return; } - if (!file_exist(name)) { - if (file_save(name, pkt->data, pkt->length)) { - DEBUG(10,("Logged rpc packet to %s\n", name)); - } - free(name); + + saved = file_save(name, pkt->data, pkt->length); + free(name); + if (saved) { + DBG_DEBUG("Logged rpc packet to %s\n", name); break; } - free(name); } }