summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--shlibs/blkid/src/evaluate.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/shlibs/blkid/src/evaluate.c b/shlibs/blkid/src/evaluate.c
index f0ae12669..b8154e470 100644
--- a/shlibs/blkid/src/evaluate.c
+++ b/shlibs/blkid/src/evaluate.c
@@ -42,6 +42,7 @@ static int verify_tag(const char *devname, const char *name, const char *value)
int fd = -1, rc = -1;
size_t len;
const char *data;
+ int errsv = 0;
pr = blkid_new_probe();
if (!pr)
@@ -50,8 +51,10 @@ static int verify_tag(const char *devname, const char *name, const char *value)
blkid_probe_set_request(pr, BLKID_PROBREQ_LABEL | BLKID_PROBREQ_UUID);
fd = open(devname, O_RDONLY);
- if (fd < 0)
+ if (fd < 0) {
+ errsv = errno;
goto done;
+ }
if (blkid_probe_set_device(pr, fd, 0, 0))
goto done;
rc = blkid_do_safeprobe(pr);
@@ -66,7 +69,9 @@ done:
if (fd >= 0)
close(fd);
blkid_free_probe(pr);
- return rc;
+
+ /* for non-root users we use unverified udev links */
+ return errsv == EACCES ? 0 : rc;
}
/**