From: Vadim Kochan <vadi...@gmail.com>

If the file open fails with O_NOATIME option then
try to open it w/o this option in case if the user
does not have enough prvileges to use O_NOATIME.

It fixes the case when user made pcap file in sudo
mode but after it should still use sudo to read it
because of setting O_NOATIME option requires higher
privileges.

Signed-off-by: Vadim Kochan <vadi...@gmail.com>
---
 netsniff-ng.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/netsniff-ng.c b/netsniff-ng.c
index dfab81a..d6782ac 100644
--- a/netsniff-ng.c
+++ b/netsniff-ng.c
@@ -570,7 +570,12 @@ static void read_pcap(struct ctx *ctx)
                if (ctx->pcap == PCAP_OPS_MM)
                        ctx->pcap = PCAP_OPS_SG;
        } else {
-               fd = open_or_die(ctx->device_in, O_RDONLY | O_LARGEFILE | 
O_NOATIME);
+               fd = open(ctx->device_in, O_RDONLY | O_LARGEFILE | O_NOATIME);
+               if (fd < 0 && errno == EPERM)
+                       fd = open_or_die(ctx->device_in, O_RDONLY | 
O_LARGEFILE);
+               if (fd < 0)
+                       panic("Cannot open file %s! %s.\n", ctx->device_in,
+                                       strerror(errno));
        }
 
        if (__pcap_io->init_once_pcap)
-- 
2.3.1

-- 
You received this message because you are subscribed to the Google Groups 
"netsniff-ng" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to netsniff-ng+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to