11d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich#!/usr/bin/env python 21d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich 31d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevichimport os 41d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevichimport sys 51d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevichimport time 61d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevichload_path = '../' 71d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevichif False: 81d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich sys.path.insert(0, load_path) 91d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich 101d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevichimport capng 111d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevichlast = capng.CAP_LAST_CAP 121d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich 131d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevichprint("Doing basic bit tests...") 141d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevichcapng.capng_clear(capng.CAPNG_SELECT_BOTH) 151d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevichif capng.capng_have_capabilities(capng.CAPNG_SELECT_BOTH) != capng.CAPNG_NONE: 161d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich print("Failed clearing capabilities\n") 171d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich sys.exit(1) 181d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich 191d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevichcapng.capng_fill(capng.CAPNG_SELECT_BOTH) 201d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevichif capng.capng_have_capabilities(capng.CAPNG_SELECT_BOTH) != capng.CAPNG_FULL: 211d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich print("Failed filling capabilities") 221d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich sys.exit(1) 231d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich 241d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevichtext = capng.capng_print_caps_numeric(capng.CAPNG_PRINT_BUFFER, capng.CAPNG_SELECT_CAPS) 251d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevichlen = len(text) 261d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevichif len < 80 and last > 30: 271d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich last = 30 281d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich 291d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevichprint("Doing advanced bit tests for %d capabilities...\n" % (last)) 301d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevichfor i in range(last+1): 311d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich capng.capng_clear(capng.CAPNG_SELECT_BOTH) 321d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich rc = capng.capng_update(capng.CAPNG_ADD, capng.CAPNG_EFFECTIVE, i) 331d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich if rc: 341d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich print("Failed update test 1") 351d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich sys.exit(1) 361d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich 371d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich rc = capng.capng_have_capability(capng.CAPNG_EFFECTIVE, int(i)) 381d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich if rc <= capng.CAPNG_NONE: 391d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich print("Failed have capability test 1") 401d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich capng.capng_print_caps_numeric(capng.CAPNG_PRINT_STDOUT, capng.CAPNG_SELECT_CAPS) 411d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich sys.exit(1) 421d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich 431d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich if capng.capng_have_capabilities(capng.CAPNG_SELECT_CAPS) != capng.CAPNG_PARTIAL: 441d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich print("Failed have capabilities test 1") 451d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich sys.exit(1) 461d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich 471d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich capng.capng_fill(capng.CAPNG_SELECT_BOTH) 481d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich rc = capng.capng_update(capng.CAPNG_DROP, capng.CAPNG_EFFECTIVE, i) 491d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich if rc: 501d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich print("Failed update test 3") 511d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich sys.exit(1) 521d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich 531d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich if capng.capng_have_capabilities(capng.CAPNG_SELECT_CAPS)!=capng.CAPNG_PARTIAL: 541d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich print("Failed have capabilities test 3") 551d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich capng.capng_print_caps_numeric(capng.CAPNG_PRINT_STDOUT, capng.CAPNG_SELECT_CAPS) 561d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich sys.exit(1) 571d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich 581d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich rc = capng.capng_update(capng.CAPNG_ADD, capng.CAPNG_EFFECTIVE, i) 591d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich if rc: 601d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich print("Failed update test 4") 611d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich sys.exit(1) 621d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich 631d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich if capng.capng_have_capabilities(capng.CAPNG_SELECT_CAPS) != capng.CAPNG_FULL: 641d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich print("Failed have capabilities test 4") 651d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich capng.capng_print_caps_numeric(capng.CAPNG_PRINT_STDOUT, capng.CAPNG_SELECT_CAPS) 661d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich sys.exit(1) 671d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevich 681d1011a3c5049a7f9eef99d22f3704e4367579ccNick Kralevichsys.exit(0) 69