From 5f7132ecff7dd4078f1086e0833a67aa2092df19 Mon Sep 17 00:00:00 2001 From: Abhisha Nirmalathas <a.nirmalathas1@student.unimelb.edu.au> Date: Tue, 16 Apr 2019 21:18:12 +1000 Subject: [PATCH] resolved uninitialised or conditional jump bug/error --- http-parser.c | 13 +++-- http-parser.o | Bin 7240 -> 6992 bytes http-server.c | 156 +++++++++++++++++++++++++++++++++++++++----------- http-server.o | Bin 24784 -> 27904 bytes image_tagger | Bin 44120 -> 45264 bytes user.c | 31 ++++++---- user.h | 4 +- user.o | Bin 12952 -> 13144 bytes 8 files changed, 153 insertions(+), 51 deletions(-) diff --git a/http-parser.c b/http-parser.c index b55de39..68c8931 100644 --- a/http-parser.c +++ b/http-parser.c @@ -11,8 +11,9 @@ #define MAX_VERSION_SIZE 10 Request* parse_request(char* request_message){ - Request *req = malloc(sizeof *req); + Request *req = calloc(1, sizeof(Request)); assert(req); + memset(req, 0, sizeof(Request)); int n_headers = 10; if (strncmp(request_message, "GET ", 4) == 0){ req->method = GET; @@ -33,12 +34,12 @@ Request* parse_request(char* request_message){ char header_field_name[MAX_HEADER_SIZE]; char header_value[MAX_HEADER_SIZE]; while(*request_message != '\r' && *request_message != '\n'){ - printf("req message first char %d\n", *request_message); + // printf("req message first char %d\n", *request_message); strcpy(header_field_name,strtok(request_message, " ")); - printf("header field name: %s\n", header_field_name); + // printf("header field name: %s\n", header_field_name); request_message += strcspn(request_message, " ")+1; strcpy(header_value,strtok(request_message, "\r\n")); - printf("header value: %s\n", header_value); + // printf("header value: %s\n", header_value); request_message += strcspn(request_message, "\r\n")+2; hash_table_put(req->header, header_field_name, header_value); } @@ -53,6 +54,6 @@ Request* parse_request(char* request_message){ } void free_request(Request* req){ - free_hash_table(req->header); + free_hash_table(req->header); free(req); -} \ No newline at end of file +} diff --git a/http-parser.o b/http-parser.o index 66aae21511f7e3a278dab384323187d943ac15ab..2b8275ce460326732ac11963bb8fce87c42ee2ee 100644 GIT binary patch delta 1021 zcmX?MalveY#$*L4j)?|_?E5qr7#Q|5PE0lu@#t=~`2GL?E|ADR1_lNOkIv&8Cnzy8 zZkc?MQFpR9lgDInCb7wVOdd=+|0myITEWD?Fu8%*eDZ&014h2h1}t2ROplo++ps#z z3x+c=FfdPCQYHj4hf!$@BZ#{J%2l2`kJVbr0we{(+8}~~fq`+3cu{I01Ea;}&#d8$ zjC_+Hii<ODnw-oYuM^3@#KOonkBy_5qj^5Z?vu@XICeLmT)?Cx%yAM-a8yJwX^L=M zXVMhe{E0n^X>tIUiojzg1_lO4K7lqSXI?hudrXsCxb`qwOm^hH&k2@dU|=wt?8qZN z*@4G^F$lzBi~^C97w{M`=1#uIQxEb_5O0Zea$-(SelkORd}48NYEemiT4H7nLvCtr zacarrTfEwndH6yYbtWhBi3>VGJ;TMoz`)ADz+f?XA)ol<1$-QmfoL*(P=46tgM8wQ z`IA5LiA#1t#bCO@!N<VBFln+PzqsTEG+A*df9vFp{Nj=)pgfpfMJWFQSnoS14<@S) z<$nh2{SW2AWR0MF_Q`?*;*uJS5H2V<#TXbE{``jk`^gXa#TnhfYBF%BshxaLKzwq6 zfXZYU0iMYV1SA-bPA(J>XFNNZQBa)m3D|@;U=tWY#xpQ5fG7zhTX-i=6clF^o%~Ty zoY7_SK|yiG0<cI0NW}9HNI3%o12;6h%^^-@xC<2rQPN1J{RRm@ZIMM1XWtws#LvuV zF*#AR92D!fM9Y{SGi?qM69c8hOmTCr2fPrYCooT5C2q#(H~FEsJ)_@bMG1S(0A`4k z+vH3MbEav`lNU+YF%<|-ek5VX*fLpB(w=h{8$^Y{<c(aylWQbZm|loXUL<M9`3fqr z4J`3TQiVxEbh46^9n%8#$w^XnoU=J08co6Sd!$sDE^tm36c?L(fQx1F9|%`T+K$m+ j@<K`B$tBV{oC%^39UCAzq*WL-CO?$6XB3#MD5DMlEJE}n delta 1238 zcmca$cEVzU1`~()L@jfs{TdT9j5cnTWt3!LWMJ^<Zq@kx|3CjW2L62qI*;vVU|?X_ zF<FmMaq=5RA^zT0hu{DIdmxF+O%`G@;qPr-@E2WtFB9+NbS7JtJOBRwpZu3meDZ## z{>cH%=I%wQg$lW;#l?x~sS0VCMa3lw$r*`73aTkw3>m43DXB#YX_=`xDGGUsxv5qP zs>N{Ovc#NHs0afC!{jz*Lq><qJD9l`nM9c<A7OEp7YJuyU|^oOq)Z6pY(~W`j3Dj? zC|7B+8mqOGIY<hGwLt^}0|Vn6@uJj121fJE)vV!+Ob*PG1;xY|w@rS{7H=TTz{JAH zHjj;?c|OPPlg)cLb~m3~z@#M1aS}{$R77%|WYQGoXy&*MrZ$(cM=>#j9Cw~mRX`NP za^w?eV{+zYV-{eZ%)+&Yv0?H-uKS!|DFy}xv&jd!#U~%&Hed_}vnEKeOg_RbGFgGg zfU$IPAWuEWYnOORL~;{za`KZI;^PyGi&KkA;?oi{b0#P9YO@s-W#*NnP44CmWmKR1 zkXKyN7V0l91_lOJ1_p)(DBpduAfLFT50nR!<%9AACp+?qGv-V#<P(=Hfr>FPFff2Z z^3Q(=m^67IpSa|7Bw1kw1_qeys>v7m#3eT&$s+5$Fqx5GT=FWCEVAB*lMVUBC0`=R ziXfTHHF+YxIHTg^Kml<{O-6_!klT>ec!AZ#Pfp|)mu!Qof%y>@<r5|!<hN!Nnf#Yu zS@Hy$njna=43{P!<QHeWH(60YT=E%I4ahD@B=`IUyMz@a%)r0^qL5u8HMvnh+)xuF z%)r0^b3-Q7d}F9Mh!RIK(|+<p0dYq6$r}a4CCfmPP?M#Q)GPw4Sp`z#`30(m8yd^i zQ1kggX%4Da8cDA%lDI6AxaH<ZL4Ib&hRK;C<)F0oNTiHOlzDTMs2C%o!{kCSbFKtv z65(K(yh+TAsR5inCW&i6S(6>aH8>lfruR)Q6gOw$W0|~4+>R+jX!0v@JH|hgH6`qs zjMyh<N!T$x5S_eA!j3bE9pc<wlRrwBGYN=I){?YilHr(~C27Yb&NX?Jq#ctF7bqW2 tlG0!b;F_!@Wyho;HaSbmjwwQH@+v7i#ubxaO4)Nx;DwlTcJfCtc>rgTOo#vg diff --git a/http-server.c b/http-server.c index 83b7af0..c5e1d8a 100644 --- a/http-server.c +++ b/http-server.c @@ -33,6 +33,37 @@ static int const HTTP_400_LENGTH = 47; static char const * const HTTP_404 = "HTTP/1.1 404 Not Found\r\nContent-Length: 0\r\n\r\n"; static int const HTTP_404_LENGTH = 45; +char *substring(char *string, int position, int length) +{ + char *p; + int c; + + p = malloc(length+1); + + if( p == NULL ) + exit(EXIT_FAILURE); + + for( c = 0 ; c < length ; c++ ) + *(p+c) = *((string+position-1)+c); + + *(p+c) = '\0'; + + return p; +} +void insert_substring(char *a, char *b, int position) +{ + char *start, *end; + int length; + + length = strlen(a); + + start = substring(a, 1, position); + end = substring(a, position+1, length-position); + sprintf(a, "%s%s%s", start, b, end); + free(start); + free(end); +} + bool player_session(char* buff, int sockfd, char* file_name, char* response){ // get the size of the file @@ -96,11 +127,12 @@ bool get_request(char* buff, int sockfd, char* file_name){ bool post_request(char *buff, int sockfd, char* file_name){ // locate the username, it is safe to do so in this sample code, but usually the result is expected to be // copied to another buffer using strcpy or strncpy to ensure that it will not be overwritten. + printf("\n\n1. the bufferis: %s\n\n", buff); char * username = strcpy(buff, "user=") + 5; int username_length = strlen(username); // the length needs to include the ", " before the username long added_length = username_length + 2; - + printf("\n\n2. the bufferis: %s\n\n", buff); // get the size of the file struct stat st; stat(file_name, &st); @@ -108,6 +140,7 @@ bool post_request(char *buff, int sockfd, char* file_name){ long size = st.st_size + added_length; int n = sprintf(buff, HTTP_200_FORMAT, size); // send the header first + printf("\n\n3. the bufferis: %s\n\n", buff); if (write(sockfd, buff, n) < 0) { perror("write"); @@ -115,7 +148,10 @@ bool post_request(char *buff, int sockfd, char* file_name){ } // read the content of the HTML file int filefd = open(file_name, O_RDONLY); - n = read(filefd, buff, 2048); + n = read(filefd, buff, size); + // const char needle[10] = "</html>"; + // buff = strstr(buff, needle)+strlen(needle); + printf("\n\n4. the bufferis: %s\n\n", buff); if (n < 0) { perror("read"); @@ -128,11 +164,6 @@ bool post_request(char *buff, int sockfd, char* file_name){ for (p1 = size - 1, p2 = p1 - added_length; p1 >= size - 25; --p1, --p2) buff[p1] = buff[p2]; ++p2; - // put the separator - buff[p2++] = ','; - buff[p2++] = ' '; - // copy the username - strncpy(buff + p2, username, username_length); if (write(sockfd, buff, size) < 0) { perror("write"); @@ -141,19 +172,84 @@ bool post_request(char *buff, int sockfd, char* file_name){ return true; } +bool dynamic_post_request(char *buff, int sockfd, char* file_name, User *user){ + // locate the username, it is safe to do so in this sample code, but usually the result is expected to be + // copied to another buffer using strcpy or strncpy to ensure that it will not be overwritten. + char * username = strcpy(buff, "user=") + 5; + int username_length = strlen(username); + // the length needs to include the ", " before the username + long added_length = username_length + 2; -static bool handle_http_request(int sockfd, User_list* users) + // get the size of the file + struct stat st; + stat(file_name, &st); + // increase file size to accommodate the username + long size = st.st_size + added_length; + int n = sprintf(buff, HTTP_200_FORMAT, size); + // send the header first + if (write(sockfd, buff, n) < 0) + { + perror("write"); + return false; + } + // read the content of the HTML file + int filefd = open(file_name, O_RDONLY); + n = read(filefd, buff, 2048); + // printf("%s\n", buff); + char insert[60]; + strcpy(insert, ""); + for(int i=0; i< user->n_keywords; i++){ + strcat(insert, user->keywords[i]); + strcat(insert,","); + } + insert[strlen(insert)-1] = '\0'; + // printf("the html to be inserted is %s\n", insert); + const char needle[10] = "</form>"; + char *ret; + + ret = strstr(buff, needle)+strlen(needle); + int position = ret - buff; + // printf("The substring is: %s\n", ret); + insert_substring(buff, insert, position); + if (n < 0) + { + perror("read"); + close(filefd); + return false; + } + printf("dynamic %s\n", buff); + close(filefd); + // move the trailing part backward + // int p1, p2; + // for (p1 = size - 1, p2 = p1 - added_length; p1 >= size - 25; --p1, --p2) + // buff[p1] = buff[p2]; + // ++p2; + // // put the separator + // buff[p2++] = ','; + // buff[p2++] = ' '; + // // copy the username + strncpy(buff, username, username_length); + if (write(sockfd, buff, size) < 0) + { + perror("write"); + return false; + } + return true; +} + +static bool handle_http_request(int sockfd, User_list *users) { // try to read the request - printf("THE NUMBER OF USERS IS (in http req) %d\n", users->n_users); + // printf("THE NUMBER OF USERS IS (in http req) %d\n", users->n_users); char buff[2049]; + memset(buff, '\0', 2049); int n = read(sockfd, buff, 2049); if (n <= 0) { if (n < 0) perror("read"); else - printf("socket %d close the connection\n", sockfd); + // printf("socket %d close the connection\n", sockfd); return false; } @@ -161,37 +257,36 @@ static bool handle_http_request(int sockfd, User_list* users) buff[n] = 0; char * curr = buff; - // parse the method Request* req = parse_request(curr); - printf("REQUEST BODY IS \n\n%s\n", req->body); + // printf("REQUEST BODY IS \n\n%s\n", req->body); if(strncmp(req->body, "quit=Quit", 9) == 0){ change_player_status(sockfd,users, QUIT); post_request(buff,sockfd, "7_gameover.html"); } - if (strncmp(req->url, "/?start=Start", 24) == 0){ - printf("matches start"); + else if (strncmp(req->url, "/?start=Start", 24) == 0){ + // printf("matches start"); if (req->method == GET){ change_player_status(sockfd, users, READY); get_request(buff,sockfd, "3_first_turn.html"); } if (req->method == POST){ if(strncmp(req->body, "keyword=", 8) == 0){ - printf("strncmp with keywoprds is successful"); - printf("the numer of users is %d\n", users->n_users); + // printf("strncmp with keywoprds is successful"); + // printf("the numer of users is %d\n", users->n_users); for(int i=0; i < users->n_users; i++){ - printf("USER ID %d", users->users[i]->id); + // printf("USER ID %d", users->users[i]->id); if(users->users[i]->status == READY){ - printf("is ready\n"); + // printf("is ready\n"); } if(users->users[i]->status == WAIT){ - printf("is wait\n"); + // printf("is wait\n"); } if(users->users[i]->status == QUIT){ - printf("is quit\n"); + // printf("is quit\n"); } if(users->users[i]->status == COMPLETE){ - printf("is complete\n"); + // printf("is complete\n"); } } if(player_won(users)){ @@ -211,21 +306,18 @@ static bool handle_http_request(int sockfd, User_list* users) change_player_status(sockfd, users, COMPLETE); } else{ - post_request(buff,sockfd, "4_accepted.html"); + User* user = get_current_user(users, keyword, sockfd); + post_request(buff, sockfd, "4_accepted.html"); + // dynamic_post_request(buff,sockfd, "4_accepted.html", user); } } } } } - else if (strncmp(req->url, "/welcome_page", 13) == 0){ - if(req->method == GET){ - get_request(buff,sockfd, "2_start.html"); - } - } else if (*req->url == '/' && (strlen(req->url) == 1)){ if (req->method == POST) { - char *name = strchr(req->body, '=')+1; + char *name = strchr(req->body, '=')+1; printf("**%s**\n", name); if (name != NULL){ for (int i=0; i < users->n_users; i++){ @@ -344,10 +436,6 @@ int main(int argc, char * argv[]) // print out the IP and the socket number char ip[INET_ADDRSTRLEN]; - // User* new_player = new_user(sockfd); - // add_user(new_player, users); - //printf(" %d \n", users->n_users); - // printf("THE NUMBER OF USERS IS %d\n", users->n_users); printf( "new connection from %s on socket %d\n", // convert to human readable string @@ -357,7 +445,7 @@ int main(int argc, char * argv[]) } } // a request is sent from the client - else if (!handle_http_request(i, users)) + else if (!handle_http_request(i,users)) { close(i); FD_CLR(i, &masterfds); @@ -365,6 +453,6 @@ int main(int argc, char * argv[]) } } } - free(users); + free(users); return 0; } diff --git a/http-server.o b/http-server.o index ef236fb0772a097b1e53a03c54f0c3089a37957f..01d0e66c9ce7ebac5f8c6b9f431adc36eed0f4b9 100644 GIT binary patch literal 27904 zcmb<-^>JfjWMqH=Mg}_u1P><4z|fG6U^{@B4h&)p!VIAvoliZQ-za!=*1qU0ebO2F zpxgC9^8rSW86KU-Uw{;Pbh`fVXs-RiP|CF*WHMOrxa${?+-v=A*DoH)7d*OMe|Rt+ z>UMqNk$eIqG{b}Ogh#K(e~)h07aoi!__r~1Fg3e=VeEGOV(t2%<|IfBOxuNH3=ALx zP9BCj#=)br_J&7i>4nbFGalWpH()O5bbZqe5!nZF2u#?c)Ad8Q>l<y?Go6RJUC;D- zFoHC7o<oxV;n7|C!=u~xf=74g2av31=ZAeD4|sGQ-vOe*p7Q8+{Q%bl@)0xyCO}=* z_~rrw1A|BBUXTC(|95V6`TzgFN9R-vFx6}D|Ns9Kk8T!K4X_&5ABG3^BTVj{ngCMP z-3n2C4Pi~_1dnd8W{>VxkhvaUha()-*&6Zx|9^y0-C#aA%zHuVyIUddI0tpCN9%z~ z5rlHEK`-YrFfbs*JRr`%41mtonE(I(cW(ugU~_jea4<0J0{H`KJj6N8dqIw3sJ{Yb zRLUVt?*<zJRSvfPwIWy+%mxQEsuFNqcKiNF@i68Ahh7OQSQWugM+<Hbe1W_Z<OjS# zOjf|QfFhgT!6`&a_yv13zTsd5CtD71vSk4!#LlTd{-LJV7lsEsx?4d?JUWk|#TQiK zI74Z1YEjy82NqifkLClc9-XZkAj7&L6g0{^TV+6r2uwB~U;-5+t)R>SH3W<4y;B_^ z#(>=9(TS8frWQaX!1@_4cyxmE4>T?zIS=M$P<BV8u+CNmh)(Pt>V`;zN}yhlitbiO zsNl^+eV|b6ZUs3KTh>tlTL^U&)KsuoC(Kl+qjuQnXO!gT*fDr?x?V^-?s|iP!J{|y z0z7;W{_i~O(d&8vURE&P@aTlZ5X{r)5!JjG<ZXsZNQMLFqV86ZBcO2u4xpDu85kH) zgrNmO^9#n#RuORIfk=<;si1JzywKSy@&Et-*OuL2NpR5vaR%d|Zm^U`@(GyhVP*YV zkO_><Ye700p&Dm+bVGut`IV%H<%Qby&0yV(FyU@!sA0y1AUHvS{R8&GYt|i*QX}?7 ziifcba;f3bcm$N(qhrCf2`KePfa0xl?~Z?<LVL?UaG|{dO!Y3nnh8KEv843}AU)l! zU<w+Zovj!C{r}$$CShs)1xQ)%R0eQzXoXmWh*C(HdUUsfm4TD=hkyV7!;&<J?a|!| zasg&Va0P4^hy=$$FGy8)E5t{zG={bKXJG=>uwb`fOSv~dF7AdJ2jc7kmHHk?=@w)s z|29@o8QS5x;CSnqfB*l3IIojDx?4ek=+W&U&^;9-?2&xQ<KQD^55@}~-2xuHt_zSe zG>Cir;D1oibRGi7q(|rVPwPB7Pk4O4;L#iKAFP4#LfUZ#9foGGHH=Ujx*a5}!2<O? zU`5av@MwO)c+7=$0fWa58~wEWqFivcnvizfbp|+FO@N0cA`ZaWY65Du0_AFtZg8mx z)1i6Dqw_*%>m5+2PX&=4y}k=zlHghzoFJR`f<gx^&w)Y_>O!zLUp7K23Q&|`mVn)@ zNa`V}2@=ELw1%7<z&3hxPlcotXp~{50MhacD1$)ri$~*|1P%s<&b@2CgYwDN1>aF? zi64dsJbGI{eE<J{7b6D)11vQ`oYmV4lIU&)=><z8C!syx|Nn2^3nCfn<)Ms99z?!= z%>@alYb>C`38c<r#<3PwkckXXD?K_}4}hH24WXdn>(SYI0wM~b929nOGN3uF^+2hu zM|UsCH&Ev>f#L(6!n=DxZiZR|Y3_jP6R@{l8nA$K57cyyT@sk4^S5e4vKUBFH$&@z zQVUe;K$!&*8u+a9=mvYIo1ys!BY*1_W@Nh+c5z^{yPuhX;dtwo@6bHS-VA1gGtT$_ z|GOEi!TkCcpqvB>DQLj894Jx5=aQG^5X(WK2Folh2TI5f$mftSLN>4Y10z9aY=CG3 z1+7PSfC5UuBEr<8v-JVUw^P9}+1(4`z	)OpyEW`5DFVUCbzn<fS?j14B1{^F2CS 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 literal 24784 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⪚s|fE7ES7==VG$juCap`PIESeglnxcsy<h+Il) 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 YgPLd9>~8=~(t->^3mA}nAYm8=0M_YYy8r+H diff --git a/image_tagger b/image_tagger index 73b51c68ecf5c959730949fe23155609e416819a..500d4670814ad0bae7fccbda331e51c3d06b059f 100644 GIT binary patch delta 20072 zcmca{gXzLUrU?>469gO>KmbBAFkDzZQEM5Oi#JG&fx*Rl;w?SS8fFM@!DK<kcEttG zP@XeH&jKi2!w3<tnY@$nv}A*#^o+L+^Eb|SnSA1}oYtS9nN~JT3=9l<ljkytbLcTJ zFj#)-mYIB!QD*WDCJ9E*$sd`@8Lv!MWEN-qJ=u{(fAR)q14hBgADP4_?_iObY``ip zS%XD_aVb~@8%UgSGnjn<OzMF|CeL7&U_1)utAqHA5+IT_jFEvsVe&;r;mH!L5{!Nz zvB?~45|a~HJs5X`Rr7$wZm=3mZeW&}+`%Hj$OsZ)d^S0d&7JWVSj`$Rd4BRnHhs>| z3=9l{3{ngWCck7`W}cjwlars!P+U@!lbXkno0?mkS_0w~mlT1h<l=%nhNR5A6o#VI z#1w|iywsBT#FUhx$vfER^O-QX`*=Dz#~bMx>6tQ2&gamd+`z%Y$S`>!hh{7&yg*^f z$iTz^3S0pYhk=1XBr}tjfq|JJm63q~BvvYw$;rUL#E=hC#K6Gt!#@G6l8u3ZK@!Y@ z5DNk!;;f)}*lfzF&crA_IhI>|att@m<_7K!jP)5%73>TQ3_1`^V6p&7To)_?Av~Jj zaCmgHraCDwc(fiUVSVwKiGjhR`3T2hh&+t^ZyMyJ!0=x+#7TjHU*3V?zbc5I0g`_C z;Q#;s|5d%56c{q<K^}N{0W9DI5&(t3%L8D(6^IW?h%YyQ`9>f<3j+hg%LQP*7Kjh> z*~<xFz7mKJ3W1jmV7?TH5AxT`0x(|)#ODC%PXP0|oD>-9GdMv40bl_pkOD3c-vP}3 z<*2}r!42XYfcc+5d>#;A0nC2|;`4&|0$~0l5T6gkX8`kWf%yC&{)c}cA729TLDBc} z0hoWvQK6n8LlC6k0$AV>NP!TDe*nzi1>y^X_#43dO(4Dqh`#{LUj^ceg7_1_{6!$X z7>M5h=FbB0#X<Z6Fn<z=F9G5wfcagH^$H9bpak<W04&f1QXmCV-~i@Vf%wuOz5$qD z1meqp_zGZt7Kkqk;tPQJNg%!)h|d7#M}heAApVEHpb!WG@fAS)2VlNeJxD+iBya&N z-~{3;f%pf&d@B%N8N}ZJ<{N?dDj@y>FkcJAR|WAWfcZ)wz8Z+%0Om`9`05~j0hliY z;%k8T31EIb7f3)8BoF`=U;^>AKzs)<|CfUTLxwhpZvf^O*()%lO#mfh5H@`4*?BR} zqw|qR^OFw&A)dz%DA+kLcpN{t!4^av@3U}VcwzqU|Nk#({PHdg3_GR=CNPA0=uQYs zVDM=E!RKMw`Ls-W2goQ;ZW4^$50d%+AdO$X1tiE2dl-~?()3{beIWTzkH&WsCU*&_ zs)Km{AMndF#2$uN&|sVBpuoUTDj4d~`SeBJ|NsAEkFokqz9wMH^wEB@sNe}k{mJ(P zbr~5a^9V`1?XYuT*k!`Nz_2gD&VgZnj-3O;i-*7e|M%#2{o&E=z~Rw)pj2`vSd}SU zRV7H(Zn&xdj>-K(;*(p1EW9TC0&A7<=sf<S<=6lJ6Jig8oDuBN{6?d*_RfA#(tq(A zq_flYg-3Jk3x-n3ohLwU@PM1%0Ww{DGMlh6<L1d)!ZM;@c~Ip9abq7y{?O!TVG~B* z$rFUN85Jk*5pEED05T;4ZpvJcsxy-VMWT2Y{s24b1;|lTC+`sPG5Y{gn}w>D<>&wZ z9?i86KrRByXT#-JgUovJW3!d$cShIM-~a#j=yd(y(Oi22q?W<nfniraTrJq%<KMt$ zU4YAjk_*K3V6&D_E)zdzDge^C7**$yuV9^ESAgZ0z~#X@mrSmdSjc#2vb1Ci<J-v# zBpn#nOnxZYZm<uOqW6P}(ifaxzz+Q3(Omlj<bVwzYd~etJ_UORhW+aH4h%0^Cr_3# zuipnM3PGW=<TFUiA#kL31_*%ZZU+HK<b(BtiWrD~9gu!ukcMv8A1A@l>(Ts1U>_)I zAr1%wNp`xz9dH2T08kMEF~AyRz@<<B|GR_iISx+bV3+I%mE<oZ!Mb5?;Q*;YBt)=L zpwb0mlq1Nfj>)akF^tlaA4#Xy``J4%fb-Ie*&qM^Z+88|=+W)^qT4~j+VxNUkqL0; z26Wb*@#ri);L#bnBgLbeMHLi$9-Xc~3=gCocm1Ho;L+{6!=uyn!9Gxs?g!cU;^aqA zAi2H(nRpCT<3UpI4Uq4^IY`02-hp9%7|2a_Ahpe|4>&w}LqB+QyFT#fyao#BuumW} zK%RR66=?y9bi2Or=sdPR2JZTMAO8P8?s^9lHm|)sx?K-|f}lI}jz{t(kAshxJs2-| zbTf22a9F#ZDOE?vyP_)a=njQhqw^0G9Ctv$aiE*Q+VxKTDv&=sx_y77co_45{a?cR z!u-Sk|0gFel`Ud)m@FYD&!{ljLQam4@jW5~eSNn%MQ#EkcLCh3oRj~{t1&iBR#Q;t zo(>n?FgZd&OT4r8#c|g^U~ecx>~rAg4*fHkQBjN^8aE7}sJS#DcCwaYlTgXO|NmPK zln8^>b{>DB`G4|0#WMNM+7}+3r4Kqo?|2+{{Q)xWxa$`X_1XcXa`Hh*VO~gZ+$oiT ziAXSjBDC4{3&_(iK%V|mzZI06ChICG`y*u-^*5kMX|(_qOU-*h6e!y$I5;ru0%w~S zpltIE6s>b#g8~Aqau+DY>;t(06t7bzH!4Zh|FU;r0P!}y`v1T6K&hffH&`hoiF-7+ zYW)8HpJo4lkV)%a{r~^k#-kf7whNT-_i;KvbQeQ(%R@D=!c74uMScedh8G2|!0rH< zw@(VHP3FyHDP?)ZY>-s*0Y(o-u+dN(_Q^n1-FZDZN?E>M8={H{s%k%|$@4-L6wRH7 zp!Rum21vZz!oa`)GXiE&Jtz=54|(*qI)Fk9lCWpJ#B@;@#1bq{F#rdXIou#nO%BZu zK}ZI{9L@J?a)pX6WBKG|D)OQ_{}DF96s(?nOT|-09^^+zkfW#TW0UPwWqBDu9t2fv zoyT9uOwLr5QSArWhE!DT07W{eIkwNh!GU4F11PXpPhO>}%Hs;+gPNu<wBAm>ttu57 z4zjKD_zQWMp~oE*l0af8#o~S&1_p)~pI?AdnCp)huU`KD4+>$|ADtI>WjHu6>;uVr zbRLHkTE8cIsY$D@ho}bCFdslE@dC(Es-SuR;i%J-yVO*<=ffT4HF=ksrr08o{hh~O z7`_9Ak?RK!u$w0TRMV9G^c?I2Q0aBUqdNdpuENTO_7{^Ms_RY8Rp(V&4>17Z8efn* zAmtZKsTM@(DRoiCr;{J3I|@sK3OcZlU`i%VexPnWIbVa9(PMJ0hB#Bf)5#91;`IWc zjIjz7<Io5=_T>M6M1ic}(OLVVv-C-4=!0(82cYyj1Ej(58Q9g(s)P$tzr1+{DjXsC zU%%V+i%0SWP`379Jk;&_#3T6xNN9!!;|Y&m4^TVig$Lsa{`zeU9ZaCIpxgC}wd;eL zlORPfeHTE*IdZf)cy!j@@aQbP&>4Ehquccc$SLhl{{QcEebWsQ0oMy4VOvmg>~#Im z?fORB^-SlXZr3xt9-tEEM&~(@yevfC=7&dj=?{-?-wPhy;2PnEXXl4~TO7ez9unN_ zAis9IegNrO{TLj9KS1pHk0&3{uvR$W=)mw|E=at0Dya7Y%BEnm!4=CA;mOjP3PMFs z|Nrl7jrjln|NaLc^+As(`)bOm27$D-9;g)A{~jcI`N{wPU^`#VWnf^~{}m+0|9J8Q zO>w4aPbRO_RAh2~GWm?Av^kTL1H+5NC;$I<x5oVc|G)G2i;%}qt*;gLb34H*+kcOc zlo&pqET<*TwBpfZb1iozdm&H>5;|e$3sBPPZuJ1W85A^N7rfwqGI@cPir~+O|Nna+ zTv+vZ@>MNGCill+*L-;da*YPqHA0V(tYUoxbBz$(g&!Y+tgp{_`2Rnox)1hfe8a)W zz~IrjmjmR9tt?<CO#Sii|9|AV|ApZJkM35G5>Q<%1^1jE$Y~IX;|!(6sYPkW9awA` zJem)%dUUpGfDG$~P@TtLJbVC(0Ga>wAXm!#|Np=F0F%cIkIq(5{}IV}Be?M&9{m6B z(K{8?-}LBi1vv^@61EF~LT)Ok=jzc7(a(6nqqEiG|NsBc(3}cl!%am5s?DQ%kTXDi zRJiQ1{a$c8Yaf7|2bKoqfnJcOyIUdQa<23E3to_$5V6ts5E{%c`#|9caV4zogG6KW zLy(0k;J^U6s{X%6H`G|LU?<4fba3E+t=(axpHY&VV+X3EFQgrJy}`iX(HnXJ?pko7 zUJeTR&chzPt`|TVq2vDl{~nAtJUStf1c?$*TqVIhw)Fo0|IK?9{{OH4&rqqjzY3Io zFM&M^az*Fy7f0{IymFL*fuXw<D!dM4bT>F?n_n<?wu<}*1rUhz=$;CSI?W56trGwL z|9@@S4VDC#IS_X+9_j{5c_g2JIiK-FJwLd>Sqn0Pv3V^>D<f3r43BP52>thHekJK) zd7*ZFGgvz#Oc)k!i0Ej%2gw|QknGF!0P2U=tUEw$0*~(47bzabGO$Km(Y^ow>pdEe zfD(N)tOM5gCIS?9oqKou`~Sal>z03@f_3T&Fx3khOTf$uAeC5BJZR*?qq`MMbsm55 z^)4vpL8BMltsoMT;OjeEUx3W+oeCNV@#t=a*aVK&Exh1_4GLC|Ziq5)!UheIz!Ely z?a|!|a)JlAAcZ8e%=;kAuKWYV4u}LtLoY~GcPqq8pmY{|_kTTdX>#QrG{9c6fQG6d zjzLYo3-5spz5#M_H`F{3XBPtpsNet@x*qILkfr?FSRDl!7&=@R9B)1I@Be>LBk*;S zM|UeI7(Kcj1iGi5Q3jcW)L0kr=yhEH&DhgG(b?;|V6wG_d_72*@j}{h1|5cGuxX4? zgFu}Yut0qeMDOtz#dkoR!xxOlTv!({c<ivzPs=aL1!tiNX~$h>fV0p9c&LHHIsjxB zI15bxWg$b53E(UQE@--^)<bAWKx-cI=)BO`dIuD|Q$eIhukQl5d7$Fuh4*(*1_Olx zJb%UA1;qv^v^tN!2)qLe>PAS@5fnF|JlX)yqwj7bsjpYO1LA=a4kRwY$qG5*U&!AE z)rC_bDFPZdh`0^}$+jM-gyxM)F#B=j4JVND#v`D-0L~hdjr7#SdRsqy|Nnm%BL@Qm zELFUSxIH;vPpUrWHYi=}0s9(6GStgA?*%g|c_77$)}8<VUvq(z=gVs>pfUv{?J?t6 z3oFP}1`mko9-XZRKqCj;5UTU|i(8;ZT4(DCh$w_|P}l_;jojDc1a26-sQ-Ht+?BBP z=<Z$c9TZY)KrRKfLp{Jn>gLz~|9AI-1fllqnÐM0QlcK`VQ|D^#7D6>Irap2em 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�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 DfJ`}| delta 18422 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 diff --git a/user.c b/user.c index 2555d0a..9f1b735 100644 --- a/user.c +++ b/user.c @@ -6,24 +6,27 @@ #include "user.h" +#define INITIAL_KEYWORDS 5 +#define INITAL_N_USERS 5 +#define INITIAL_KEYWORD_LENGTH 30 User* new_user(int id){ - User *user = malloc(sizeof *user); + User *user = calloc(1, sizeof *user); assert(user); user->id = id; - user->n_capacity = 5; + user->n_capacity = INITIAL_KEYWORDS; user->n_keywords = 0; user->status = WAIT; - user->keywords = malloc(sizeof(char*)*user->n_capacity); + user->keywords = calloc(user->n_capacity,sizeof(char*)); assert(user->keywords); return user; } User_list* initialise_player_list(){ - User_list *users = malloc(sizeof(User_list)); + User_list *users = calloc(1, sizeof(User_list)); assert(users); users->n_users = 0; - users->users = malloc(sizeof(User*)*5); + users->users = calloc(INITAL_N_USERS, sizeof(User*)); assert(users->users); return users; } @@ -44,10 +47,11 @@ void resize_keywords(User* user, char* keyword){ char* add_keyword(int id, User_list* users, char* query){ const char s[2] = "&"; char * curr = query; - char * token = malloc(sizeof(char)*20); + char * token = calloc(INITIAL_KEYWORD_LENGTH, sizeof(char)); + token[0] = '\0'; assert(token); curr += 8; - memcpy(token, strtok(curr, s), strlen(strtok(curr, s))); + strcat(token, strtok(curr, s)); printf("the keywod is %s\n", token); for(int i=0; i < users->n_users; i++){ if(users->users[i]->id == id){ @@ -117,9 +121,6 @@ bool keyword_match(User* user, char* keyword){ void reset_players(User_list *users){ for(int i=0; i< users->n_users;i++){ - for(int j=0; j< users->users[i]->n_keywords; j++){ - free(users->users[i]->keywords[j]); - } users->users[i]->n_keywords = 0; } } @@ -143,4 +144,14 @@ bool player_won(User_list *users){ } } return false; +} + +User* get_current_user(User_list* users, char* keyword, int id){ + User *user = NULL; + for(int i=0; i < users->n_users; i++){ + if (users->users[i]->id == id){ + user = users->users[i]; + } + } + return user; } \ No newline at end of file diff --git a/user.h b/user.h index 969c178..6ca8b16 100644 --- a/user.h +++ b/user.h @@ -48,4 +48,6 @@ void reset_players(User_list *users); bool has_match_ended(User_list* users, char* keyword, int id); -bool player_won(User_list *users); \ No newline at end of file +bool player_won(User_list *users); + +User* get_current_user(User_list* users, char* keyword, int id); \ No newline at end of file diff --git a/user.o b/user.o index 7c8a2d69f9601114696a54bfdb31181e3d0f2ad1..016374a793e8702125fd09ac11093888a1cf1835 100644 GIT binary patch delta 5176 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 Uk&zu2xc9)oz);LMd6%vn0EucU0ssI2 delta 4995 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 KCgbEPJvjg{b|UBi -- GitLab