Kadmind Fuzzing Corpus ====================== This directory contains seed inputs for fuzzing kadmind RPC handling. Usage ----- Run kadmind in fuzzing mode: ./kadmind --fuzz-stdin < corpus_file.bin > output.bin Or with a specific realm: ./kadmind -r MY.REALM --fuzz-stdin < corpus_file.bin Message Format -------------- Each corpus file contains a length-prefixed message: [4-byte big-endian length][message payload] The message payload starts with a 4-byte command number (kadm_ops enum): kadm_get = 0 - Get principal kadm_delete = 1 - Delete principal kadm_create = 2 - Create principal kadm_rename = 3 - Rename principal kadm_chpass = 4 - Change password kadm_modify = 5 - Modify principal kadm_randkey = 6 - Randomize keys kadm_get_privs = 7 - Get admin privileges kadm_get_princs = 8 - List principals kadm_chpass_with_key = 9 - Change password with explicit keys kadm_nop = 10 - No operation (ping/interrupt) kadm_prune = 11 - Prune old keys Corpus Files ------------ Normal operations: nop_reply.bin - NOP with reply requested nop_noreply.bin - NOP without reply (interrupt) get_principal.bin - GET with basic mask get_principal_all.bin - GET with all fields delete_principal.bin - DELETE principal create_principal.bin - CREATE with minimal fields create_principal_attrs.bin - CREATE with attributes modify_principal.bin - MODIFY principal rename_principal.bin - RENAME principal chpass_principal.bin - CHPASS chpass_principal_keepold.bin - CHPASS keeping old keys randkey_principal.bin - RANDKEY simple randkey_principal_full.bin - RANDKEY with ks_tuples get_privs.bin - GET_PRIVS get_princs_all.bin - LIST all principals get_princs_expr.bin - LIST with expression get_princs_iter.bin - LIST with online iteration prune_principal.bin - PRUNE to specific kvno prune_principal_all.bin - PRUNE (no kvno) chpass_with_key.bin - CHPASS_WITH_KEY create_with_tldata.bin - CREATE with TL_DATA create_empty_password.bin - CREATE with empty password Edge cases and malformed inputs: invalid_cmd.bin - Invalid command number truncated_get.bin - GET with missing data malformed_principal.bin - Bad principal encoding long_principal.bin - Very long principal name many_components.bin - Principal with many components large_nkeydata.bin - Large n_key_data (overflow test) negative_nkeydata.bin - Negative n_key_data empty_message.bin - Zero-length message Regenerating ------------ Run gen_corpus.py to regenerate all corpus files: python3 gen_corpus.py