Fix mixed type comparison resulting in wrong `changed` (#2772)

When using `use_max` or `use_min` in `pam_limits`, the new value is an integer compared with the actual_value which is a string, so they are always different and the module reports a changed but none occurred.
reviewable/pr18780/r1
Alexandre Garnier 8 years ago committed by René Moser
parent 560e773b14
commit 91c498557c

@ -212,7 +212,7 @@ def main():
if use_max: if use_max:
if value.isdigit() and actual_value.isdigit(): if value.isdigit() and actual_value.isdigit():
new_value = max(int(value), int(actual_value)) new_value = str(max(int(value), int(actual_value)))
elif actual_value_unlimited: elif actual_value_unlimited:
new_value = actual_value new_value = actual_value
else: else:
@ -220,7 +220,7 @@ def main():
if use_min: if use_min:
if value.isdigit() and actual_value.isdigit(): if value.isdigit() and actual_value.isdigit():
new_value = min(int(value), int(actual_value)) new_value = str(min(int(value), int(actual_value)))
elif value_unlimited: elif value_unlimited:
new_value = actual_value new_value = actual_value
else: else:
@ -229,7 +229,7 @@ def main():
# Change line only if value has changed # Change line only if value has changed
if new_value != actual_value: if new_value != actual_value:
changed = True changed = True
new_limit = domain + "\t" + limit_type + "\t" + limit_item + "\t" + str(new_value) + new_comment + "\n" new_limit = domain + "\t" + limit_type + "\t" + limit_item + "\t" + new_value + new_comment + "\n"
message = new_limit message = new_limit
nf.write(new_limit) nf.write(new_limit)
else: else:
@ -240,7 +240,7 @@ def main():
if not found: if not found:
changed = True changed = True
new_limit = domain + "\t" + limit_type + "\t" + limit_item + "\t" + str(new_value) + new_comment + "\n" new_limit = domain + "\t" + limit_type + "\t" + limit_item + "\t" + new_value + new_comment + "\n"
message = new_limit message = new_limit
nf.write(new_limit) nf.write(new_limit)

Loading…
Cancel
Save