miniroon

Simplistic macaroon-based authorization for Unix systems
git clone https://ccx.te2000.cz/git/miniroon
Log | Files | Refs

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 */