caveat_env_absent.c (1113B)
1 #include <assert.h> 2 #include <string.h> 3 4 #include "verify_common.h" 5 #define caveat_name "env-absent" 6 #include "caveats_impl.h" 7 8 9 miniroon_error miniroon_caveat_prepare_env_absent(netstring_chunk *c, miniroon_caveats_state *state) { 10 bytebuffer name; 11 12 if(!netstring_chunk_next(c)) { 13 return caveat_inv1("missing variable name"); 14 } 15 name = c->inner; 16 17 if(netstring_chunk_next(c)) { 18 return caveat_inv1("unexpected argument"); 19 } 20 21 char name_0[name.len + 1]; 22 memcpy(name_0, name.data, name.len); 23 name_0[name.len] = 0; 24 25 miniroon_env_entry *entry = miniroon_env_map_find(&state->emap, name); 26 if(entry == NULL) { 27 return caveat_fail3("variable '", name_0, "' not in allowlist"); 28 } 29 switch(entry->state) { 30 case ENV_NO_CHANGE: 31 entry->state = ENV_REMOVE; 32 break; 33 case ENV_REMOVE: 34 break; 35 default: 36 return caveat_fail2("conflicting state for variable: ", name_0); 37 break; 38 } 39 return MINIROON_OK; 40 } 41 42 miniroon_error miniroon_caveat_validate_env_absent(netstring_chunk *c, miniroon_caveats_state *state) { 43 return MINIROON_OK; 44 } 45 46 /* vim: sts=2 sw=2 et 47 */