afs: Check for invalid afs_fakestat_enable values 98/13698/5
authorAndrew Deason <adeason@sinenomine.net>
Mon, 15 Jul 2019 22:51:41 +0000 (17:51 -0500)
committerBenjamin Kaduk <kaduk@mit.edu>
Sun, 18 Aug 2019 19:14:28 +0000 (15:14 -0400)
The only valid values for afs_fakestat_enable right now are 0, 1, and
2. Check if the given value actually matches one of those, in case we
have mismatched libafs/afsd versions, and future code adds new values.

Return EINVAL and log a message if we're given an unknown value.

Change-Id: I36ad4263e7e3ab311f6edb97a9c48edc035f6753
Reviewed-on: https://gerrit.openafs.org/13698
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
Tested-by: BuildBot <buildbot@rampaginggeek.com>

src/afs/afs_call.c

index 1c83865..d2f9b07 100644 (file)
@@ -1289,8 +1289,14 @@ afs_syscall_call(long parm, long parm2, long parm3,
     else if (parm == AFSOP_SET_DYNROOT) {
        code = afs_SetDynrootEnable(parm2);
     } else if (parm == AFSOP_SET_FAKESTAT) {
-       afs_fakestat_enable = parm2;
-       code = 0;
+       if (parm2 >= 0 && parm2 <= 2) {
+           afs_fakestat_enable = parm2;
+           code = 0;
+       } else {
+           afs_warn("afs: afsd gave us unknown fakestat value %ld (are afsd "
+                    "and libafs running the same version?\n", parm2);
+           code = EINVAL;
+       }
     } else if (parm == AFSOP_SET_BACKUPTREE) {
        afs_bkvolpref = parm2;
     } else if (parm == AFSOP_SET_RXPCK) {