static int initialize_session_( uint index ) { kernel_vars_t *kv; ulong kv_phys; if( g_sesstab->magic == 1 ) return -EMOLSECURITY; /* printk("initialize_session\n" ); */ if( g_sesstab->kvars[index] ) return -EMOLINUSE; if( !g_num_sessions && perform_actions() ) return -EMOLGENERAL; if( !(kv=alloc_kvar_pages()) ) goto error; memset( kv, 0, NUM_KVARS_PAGES * 0x1000 ); kv->session_index = index; kv->kvars_virt = kv; kv_phys = tophys_mol(kv); kv->kvars_tophys_offs = kv_phys - (ulong)kv; if( init_mmu(kv) ) goto error; init_host_irqs(kv); initialize_spr_table( kv ); msr_altered( kv ); g_num_sessions++; g_sesstab->kvars_ph[index] = kv_phys; g_sesstab->kvars[index] = kv; return 0; error: if( !g_num_sessions ) cleanup_actions(); if( kv ) free_kvar_pages( kv ); return -EMOLGENERAL; }
int main(int argc, char **argv) { if(argc < 4) { printf("Usage: ./decryption_client [ServerHost] [ServerPort] [FilePath]\n"); return 0; } //printf("argc %d\n",argc); struct sockaddr_in serv_addr; for(int k = 0; k < argc-3; k++) { int sockfd[argc-3], portno; struct hostent *server; char host[30]; strcpy(host,argv[1]); portno = atoi(argv[2]); char input_file[300]; strcpy(input_file,argv[3+k]); sockfd[k] = socket(AF_INET, SOCK_STREAM, 0); if (sockfd[k] < 0) { char err_msg[30] = "ERROR opening socket"; perror(err_msg); } server = gethostbyname(host); if (server == NULL) { fprintf(stderr,"ERROR, no such host\n"); exit(0); } bzero((char *) &serv_addr, sizeof(serv_addr)); serv_addr.sin_family = AF_INET; memcpy ( (char *)&serv_addr.sin_addr.s_addr, (char *)server->h_addr, server->h_length ); serv_addr.sin_port = htons(portno); int k = connect(sockfd[k],(struct sockaddr *)&serv_addr,sizeof(serv_addr)); if (k < 0) { char err_msg[30] = "ERROR connecting"; perror(err_msg); } perform_actions(sockfd[k],input_file); close(sockfd[k]); } return 0; }