STATUS CS_mod_session(char *uns_decimal_session, CS_SCB ** scbp) { u_i4 scb_as_ulong; CS_SCB *an_scb; CS_SCB *scan_scb; STATUS stat; CS_SCB *this_scb; bool blFound = FALSE; CSget_scb(&this_scb); CS_str_to_uns(uns_decimal_session, &scb_as_ulong); an_scb = (CS_SCB *) scb_as_ulong; for (scan_scb = Cs_srv_block.cs_known_list->cs_next; scan_scb && scan_scb != Cs_srv_block.cs_known_list; scan_scb = scan_scb->cs_next) { if (scan_scb == an_scb) { blFound = TRUE; break; } } if ((!blFound) && ((an_scb = CS_find_scb(an_scb)) == 0)) { /* FIXME -- real error status */ /* "Invalid session id" */ stat = MO_NO_INSTANCE; } else if ((MEcmp(an_scb->cs_username, this_scb->cs_username, sizeof(an_scb->cs_username)))) { /* FIXME -- better error */ /* "Superuser or owner status required to modify sessions" */ stat = MO_NO_WRITE; } else { *scbp = an_scb; stat = OK; } return (stat); }
static STATUS CS_mod_session( char *uns_decimal_session, CS_SCB **scbp ) { u_i4 scb_as_ulong; CS_SID an_sid; CS_SCB *an_scb; STATUS stat; CS_SCB *this_scb; CSget_scb(&this_scb); CS_str_to_uns( uns_decimal_session, &scb_as_ulong ); an_sid = (CS_SID)scb_as_ulong; an_scb = CS_find_scb(an_sid); if (an_scb == NULL) { /* FIXME -- real error status */ /* "Invalid session id" */ stat = MO_NO_INSTANCE; } else if ((MEcmp(an_scb->cs_username, this_scb->cs_username, sizeof(an_scb->cs_username)))) { /* FIXME -- better error */ /* "Superuser or owner status required to modify sessions" */ stat = MO_NO_WRITE; } else { *scbp = an_scb; stat = OK; } return( stat ); }