Blob Blame History Raw
From ca542322933c2477b7a67da4eb123ac810de8512 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
Date: Sun, 11 Jan 2015 23:40:46 -0500
Subject: [PATCH] fstab-util: fix priority parsing and add test

(cherry picked from commit a75f4e2a02e287294b21ae9e5b1f28b2f8faea39)

Conflicts:
	src/shared/fstab-util.c
	src/test/test-fstab-util.c
---
 src/shared/fstab-util.c    |  6 ++++--
 src/test/test-fstab-util.c | 17 +++++++++++++++++
 2 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/src/shared/fstab-util.c b/src/shared/fstab-util.c
index 546c81b80f..db3769966b 100644
--- a/src/shared/fstab-util.c
+++ b/src/shared/fstab-util.c
@@ -133,13 +133,15 @@ int fstab_find_pri(const char *options, int *ret) {
         assert(ret);
 
         r = fstab_filter_options(options, "pri\0", NULL, &opt, NULL);
-        if (r <= 0)
+        if (r < 0)
                 return r;
+        if (r == 0 || !opt)
+                return 0;
 
         r = safe_atou(opt, &pri);
         if (r < 0)
                 return r;
 
-        *ret = (int) r;
+        *ret = (int) pri;
         return 1;
 }
diff --git a/src/test/test-fstab-util.c b/src/test/test-fstab-util.c
index ddf965dde5..7a4fa04c8a 100644
--- a/src/test/test-fstab-util.c
+++ b/src/test/test-fstab-util.c
@@ -107,6 +107,23 @@ static void test_fstab_filter_options(void) {
         do_fstab_filter_options("", "opt\0", 0, NULL, NULL, "");
 }
 
+static void test_fstab_find_pri(void) {
+        int pri = -1;
+
+        assert_se(fstab_find_pri("pri", &pri) == 0);
+        assert_se(pri == -1);
+
+        assert_se(fstab_find_pri("pri=11", &pri) == 1);
+        assert_se(pri == 11);
+
+        assert_se(fstab_find_pri("opt,pri=12,opt", &pri) == 1);
+        assert_se(pri == 12);
+
+        assert_se(fstab_find_pri("opt,opt,pri=12,pri=13", &pri) == 1);
+        assert_se(pri == 13);
+}
+
 int main(void) {
         test_fstab_filter_options();
+        test_fstab_find_pri();
 }