Пример #1
0
Файл: 6.c Проект: lgylo/CS
int main() {
    char buf[1021];
    // read process uid
    readline(buf);
    uid_t puid;
    sscanf(buf, "%d", &puid);
   
    // read process gids
    gid_t thith[32];
    size_t size = 0;
    readline(buf);
    read_gids(buf, thith, &size);
    
    // read operation
    readline(buf);
    unsigned operation;
    sscanf(buf, "%u", &operation);

    struct file_descr curfile;
    while (!readline(buf)) {
        parse_fdescr(buf, &curfile);
        if (!check_permission(&curfile, puid, thith, size, operation))
            printf("%s\n", curfile.name_);
    }

    return 0;
}
Пример #2
0
static int set_faked_resgid(gid_t rgid, gid_t egid, gid_t sgid) {
  read_gids();
  if (rgid != (gid_t)-1)
    faked_real_gid = rgid;
  if (egid != (gid_t)-1)
    faked_effective_gid = egid;
  if (sgid != (gid_t)-1)
    faked_saved_gid = sgid;
  faked_fs_gid = faked_effective_gid;
  return write_gids();
}
Пример #3
0
static int set_faked_gid(gid_t gid) {
  read_gids();
  if (faked_effective_gid == 0) {
    faked_real_gid = gid;
    faked_effective_gid = gid;
    faked_saved_gid = gid;
  } else {
    faked_effective_gid = gid;
  }
  faked_fs_gid = gid;
  return write_gids();
}