caveat_env_absent.c (1019B)
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 void miniroon_caveat_prepare_env_absent(netstring_chunk *c, miniroon_caveats_state *state) { 10 bytebuffer name; 11 12 if(!netstring_chunk_next(c)) { 13 caveat_die1("missing variable name"); 14 } 15 name = c->inner; 16 17 if(netstring_chunk_next(c)) { 18 caveat_die1("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 caveat_die3("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 caveat_die2("conflicting state for variable: ", name_0); 37 break; 38 } 39 } 40 41 void miniroon_caveat_validate_env_absent(netstring_chunk *c, miniroon_caveats_state *state) { 42 } 43 44 /* vim: sts=2 sw=2 et 45 */