The problem seems to be using the division operator in jk_lib to obtain
the major device number, and the division operator always returns a
floating point, not an integer. The fix is to use the floor division
operator:
--- /usr/share/jailkit/jk_lib.py.orig 2021-09-08 14:52:21.196000000 -0600
+++ /usr/share/jailkit/jk_lib.py 2021-09-08 15:01:07.748000000 -0600
@@ -578,18 +578,18 @@
sb = os.stat(path)
try:
if (sys.platform[:5] == 'linux'):
- major = sb.st_rdev / 256 #major = st_rdev divided by
256 (8bit reserved for the minor number)
+ major = sb.st_rdev // 256 #major = st_rdev divided by
256 (8bit reserved for the minor number)
minor = sb.st_rdev % 256 #minor = remainder of st_rdev
divided by 256
elif (sys.platform == 'sunos5'):
if (sys.maxint == 2147483647):
- major = sb.st_rdev / 262144 #major = st_rdev
divided by 256 (18 bits reserved for the minor number)
+ major = sb.st_rdev // 262144 #major = st_rdev
divided by 256 (18 bits reserved for the minor number)
minor = sb.st_rdev % 262144 #minor = remainder
of st_rdev divided by 256
else:
#64 bit solaris has 32 bit minor/32bit major
- major = sb.st_rdev / 2147483647
+ major = sb.st_rdev // 2147483647
minor = sb.st_rdev % 2147483647
else:
- major = sb.st_rdev / 256 #major = st_rdev divided by 256
+ major = sb.st_rdev // 256 #major = st_rdev divided by
256
minor = sb.st_rdev % 256 #minor = remainder of st_rdev
divided by 256
if (stat.S_ISCHR(sb.st_mode)):
mode = 'c'
--
Jesse Norell
Kentec Communications, Inc.
970-522-8107 - www.kci.net