summaryrefslogtreecommitdiff
path: root/netsniff-ng.c
diff options
context:
space:
mode:
authorVadim Kochan <vadim4j@gmail.com>2015-05-07 08:48:19 +0300
committerTobias Klauser <tklauser@distanz.ch>2015-05-07 12:00:07 +0200
commitf6d211974eff4ba67461262031af54fdb4f54210 (patch)
tree74dbca2eedda4ac963c3ee5b312654aca9ff7571 /netsniff-ng.c
parent096b043a8581ad43f030323a69b4e6c6e78530fa (diff)
netsniff-ng: Open pcap w/o O_NOATIME on 2nd try
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 <vadim4j@gmail.com> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
Diffstat (limited to 'netsniff-ng.c')
-rw-r--r--netsniff-ng.c7
1 files changed, 6 insertions, 1 deletions
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)