From 7a2ac39f51f2912b1ee412e01199b023e1a20f8e Mon Sep 17 00:00:00 2001 From: Stephane Provost Date: Wed, 25 Sep 2024 16:23:01 +0200 Subject: [PATCH 1/2] Added clean target; fixed memory corruption if the input buffer is > 248 bytes; simplified code; fixed cppcheck warnings --- Makefile | 9 +++++++-- server | Bin 49088 -> 0 bytes src/server.c | 51 ++++++++++++++++++++++++++------------------------- src/server.h | 8 +------- 4 files changed, 34 insertions(+), 34 deletions(-) delete mode 100755 server diff --git a/Makefile b/Makefile index 52f5501..a1705aa 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,12 @@ SRCDIR = src # Find all .c files in the src directory SRCS = $(wildcard $(SRCDIR)/*.c) +OBJECT = server +.PHONY: clean # Build the executable -server: $(SRCS) - gcc -g $(SRCS) -o server +$(OBJECT): $(SRCS) + @gcc -g $(SRCS) -o $(OBJECT) + +clean: + @rm -f $(OBJECT) diff --git a/server b/server deleted file mode 100755 index ee4ef77fd350ea752445f20de4dc788d9912a692..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49088 zcmeIb3w%`7xi`G_o>?=K`<*0QC)^PU7eNsL6Jc;i1EdgIwCWI&35h0|bTZ*$0g;&2 zX-u26+T&?$i+$~>ZMDa9s#ZZT+LmBz6??4G)}Di{Xi}($q8_QW&G&!SWzU`=gMHuc zyua^#zaJYiYprKJ_w}sn-m~YnK=mrqFqpnvY&jF9A_=Kb6?-1n7>rf0#ViY-)7Vtz z0oaYd3RRt)9y4WyPJIf`g_P(@C^JerUV@oUwT6@uU8?Iywye=9%avuKi0osyTT9om)MI#upvb6c7>U%GH^OT(O&=C;o5bG9$Obk3y<%R9p53xo=! zmmhx=Q&+Fqz|d|31XJvoxkr{YKdLKK^@P8#=Z3V^ciuDi^4r$FJ+aqZ{qj$K_afnt z-b6z;7d}# z_oaZ(OQGk+6!>2Uz8`hT*NXs*=I1>r;1qwO;r}fK{FM~&-=={7I0bw`3ixmecq9e< z{S@%V6!6n2;7_H1k4@1o52x_|V=4IjV+wdM1)Qew$@n|xYHkZfgKg1p9n-mX77W&J zuM0Ldx7D>Y-x^{a(MWw$gtgYSw1n$fYpAs~ycN(;TSGL=BBA=NAiywLAMA+MMWVsh zy5=@P)7s8D!u7X=qO2|&ZWf^S9h5}Fw-B2S)O3VeLiI?Zk+yo^w|7Q6SYsq4gaXLw zTf!Zp&{i*LTS9_)LnoNGN1EHBjcjvsTLWu~hTA%bE8(>?cSM0ljG7zk8X6)UtUVNo zgd;+UIw(|MA8L=XEupBc4+eqI77oJ1x@dE_jfJ*1M`0Ljs=p;z-*ii`v97s=)k`Np zbuujs9%MPq2bZ#|tE;YB5nNDyiJhCj(9Xtlm&CIR$``Ry_C6BqlC7^}4mccbU&kGAwNw># zLk@U`jm_9;2RzdOKkI-a5aO5e59y+o-lERufak=qS*`=FV~eUw9Pm5`zTW|N&Mz|^ z@B#<^JO`ZCTl!k;fUA%aRTU2S7>$h7a==R*@EQla)B)eZlz^6Ol0}l912mFWwKFa|=>VRM5fM3Y|uX*5|oQWS;U8j6j5C7F#gnjow)Eqf# zb^X})Bf)TFQDhBcXGW%VAjz4;2)~JH&J4dkGBVO9$}|9;8Ggww)4+FT_!+xQ1Kye8 zf3eH7(K$1Gzg?z*@62$&U8Vu=%<%1YnFg0L!=JLtG@zduuCvQD;GG%%m|doU?#ytd zU8Vu<%Oat4Q;WE2S1KOG4JiAN-*_mO(F4F*ZX82Ek)ArK91^ewX4Op<>F4I5- z`|UCfP_W-F)4&A#?J^BWu-`7zKm_~kGEG#l-!9XD1pDnW4MectF4F)6`|UCfJh0y` z(|`l}?J^BCu-`7z00aB&@+49I(_gjyeo=niF4I5)`|UCfAh6#q)4&1y?J^A*u-`7z zKmq%88PRs*YKpd%OvD??f4w%b{9aP|k4fbdN#)-rm4BI3{&`aQCrRalN#)0q$`2=% zzm-(}T2lF*q;hXkxjU)6E2-R>RBlZwhmy)SCY3iNl~*T~14-p&N##XJ}R>fYr$%_5X>U!gJO>JQQ!2IW| z-es?2m>DVh0WjZfEYF#A2Z9s>Wbd-;8YtoGD7pM>vXWGc|oJo5K??);H z{w#sNXfh?U{$|BaThF|GrS;5Nmt`EbUiw?K5DY?!fp6q^qlkM=Pvh&JW$)F4W#{Y- zR@bttfXS@biD;(PvuqU#L(hFUGBVVF!Rj#oIq-}dL2Jt=`r&P;q|64;VX&`=?Rvh! z>Tyq_3D=4R&dwizJs)72wPJ%qAAp_J8#qq+x6vi79?A!XPHshR$m*#mAxm%6g`6L< zoF5Lv0ji3Ogv+URi&?I!}GD1tk@X>_402?!B0RLHgpP@ zCyhRdNy-gbUAu-@XBQwsrBBl+fx_7aYqqo?%7;D!s^@;>Fwt+tb`2%jI2d@BL<|PR z+39|oWDe2H^)yXaL%#>#Sm52RUGI)`mO`s>${i>FGBWZsp$*aaWc6-1-4l4X@(DK} zR_vwyL@T(!%A-K-9@s(D@4>a?z=v(>_0p9?jf2<)J$)2Y+R$-ST0I+v8e>LJM3PqT~_djVYj0p@j`9qAkc&Mzv?>p}bk+I8gQ#XvqpQz$T30~0C`;*$#T zA{)^KM93r06^gcp=c-W~_uP8x_ETqx)4@z|cKUB<{(w~aQQ-yNqPRc*!N|y9_jq7~ zj16|@A}18@?cRi}6?^uO9~ICi5|S?Y5lq*xn-uK3KE`^t8OUVeOr z)Sv`9TfO&?s#b4rjZH3{eKRD*x~Br#b&x*Uju}J$^k;}*B3fUROk}h!2dAe=#i1yu zte$&_nbq^yM!}P)5hGQx({V4f&?tb0x(f}K^TY0SK*{;xv7YW)WB~pe1jT+W`^D`} zNiU;f_}iF~2fO`1rE9Re1fL{*cq#&?M-;94qgL#w^~`b8GGr2a7N*kx(&ILheD|pG z9q~y)_>?4sXZKSlh{3bJBLQWng=ZgdeT3khl0GK1KCg=FfNAyCnr^EHyjUotr+c7tF6cgiod-F8 z3!I7KMpg8I%^?3isMAYrnJ?MPNGXJju7jeVblxa=#|CB9EL16o-B|*{gu$UnkZemC5KWmbs%YS3P60oF zR>QMQQk1`Sqi_InX-ZbGg^C(vXU4PhRJL(2@MbzO`KDkpIP_g|a;)1zJx0Gb ztsa?;y+WRxBP)p|dKB?Mk0P!>6TsLDgtjRi3iSwaGPb*>k%r0vXa7s!3u@uHh_m+B zR6E$c7)+`82fGVZPBGk%5QM&2R|_H`t{5a}^2xxED&0dgmQ*>4)i&%QekX6%Jm6;H z;f?e7xAzo}ULjDb{dt^Dkv%tJMXq^Fhp%3lD&dDfl-Rh{P-Xaw#9jMsaA+~GtgeH? zqG+f`@Q)3`e>J3K&tp^}xm1dfu8JKMacIRpfb2hjT81B35-KTl;$0%4@DdJel={f{ z`bQ9SiNV3>I#>dfNjaZ?5yRE+MvPweoO%1HN1$cw;0=P~W2B06{1`W^VoLa_6WM>>tmg73~F*`Z4C-C8@qZut8 zfwNd)iH0Zu;B3!^)7GH-C;_^#^6J`kI%n%!YAH7SO+aZ;GTNjiTT6H|y5pme91|Nl z0O?Wxiq*69=tt3=Gq0r$TCqQC2C>YeU4eHIC+{Loa_*wZdKA+K1LzHyK~(sizvba| zghzDt`Muu5uuQxB*__qS!kzI(-}wL>>WI~@Q+|qls5^A%O1P3ng0KFGMufmwESt}= z=qhRgt82iZsv4^5tuX|w*P?U?YaXf!oS~72iZro&!Y_Eq;p2LuLY1Sxb)DJ-xer={ zfdNQmNNI(Ieja#`m~AI!F|>h*hryw0cqd*a0n_~s0e?PC&U;F6IEE>-P*jTv=6Pw( z(cw>HeCY~2MM|SL4i0sJN*QyMmO3$P52&iQ=-4D;E~q~*sfQr)Sphx#G>IA7D&e$4 zISxvkckMdOqF%Yxn2JtEHOd)Z6ohK3S`Degbno)%nb2qG5GkRZ-B|)LcS-D_NBmzm!1oGhBH~>-}tdz(_H2hU^JBG1b@IQSBiyBB69GXciZT)HQ zwMJ2XUsIlJ0Q6G|dM}`4mbBnBvEUFM3!LiOb&7Q=2Q26boD%BSN;26SpO>_xe$R$e z2rBqhIHv_Ili-V7H6RVY05zS%4bC0V$b~-vm{FGY3cWQIP;f4uHn4h^CQMADWBY+^ z2<*&{#x8pGa*~8e5A!n2#R151usv<{E>ubo#FUM75?p)So~qbcVf;><=n`)C{VeKCNn7Vf6S z0DKg9A1XdgZW~%8;fOV}kDAhX81d(m&X!n@1DB1^=Lv-6Bhcr;!NBu0U0~2WCR$)H za9pG`cv8d$hK3&kKq%2$^aGsLDqYH;B389HZ-RPV1AdB|p92;PJb&^gh5p$%`WdJJ z^f6BKe+N1w96MRA@UM^KKP&NZ8Wm^%eTjcuz(>hAsU)19t{~29C#BbnQoT#2AV5I-4t6Q*b@{2l7xd*REa9k3=hS9$$Ta zHDk1`UcQ)u)x13Lyy9|1>$Ydt&sg*-F(DOptM+}u!m94PwhN}iP!vpKMpxh{{$8dj z?-5$8y_~c62XrQnh`aHuBj9g8)kkA^?BI49onw!+BT0(-!S1^NqzhZAK4gVTgWdPW zv-?zbu=`F8?CB;}A}YHdL~i&^kYU$Bc}x?N$J(*kJuHH4imp`Q*#-|=v2J4BCD>Ax1I=aRlmS1S2$0}T0OrJ~me@nD{o1d2)Xx(gRL2`?k^Vu(v4|@4*A$)M?XK#@&x*tI$T+#|C9lW76u#kM^9qU`-nDcB; zddvqovVjme0{_XCV(P_cwE$zd@ru>E+eewhR@Y%*Z^cl#4TI#ZKCA1kv(~H+Fo_y3 zb-jM}nPFG#r?Fp%D1HedhJPtkx`%WS1Etd7)pxA#(Vo$?x}J6Sa6FX4#HpKc|WjW$OuG(>Ep&w8>YwA`v)UG29HtP6Ft z;~}Du6|-_tS7JT6bS^Ln;lR?4=niB+X2DMzXIh8o0iBEe(I)F@d^Y$$y*X^f+97@W zV(ZBWp66NOpWkjB*zWHLw=_3^#)79dTGpY>EqI{lid{>sr{_wZOF>ryx{cP8bDM;E zo2>)kh8<9|ZZqgMfv#z=q8;LCHh@7TR_s59K6e7`V;r*%EsaKi+OXVux;6}jVV)Hu zJzyIOt0LjnrPcufCnVdpHQ{K8(8;2~ikZuiZyc<+II{e3ML7<~Pa&4rFdd^}{efkI z9=wiVsUY?)Id?oF!q!&k&u<8Y1{o=I7-!fHWq%v5YY=s#F~z8Np4s3l^U<4(XLXax zkUT+7i2G!#6jOCb`XSm-9h(QEe9K2Q;=J<2Trqt#nV(9OX-b*@FCmDAsus zCEfdb?O-$;%yK8h!>x|mh^*}joWiE{6c*w~b3VHW{Tbtz!&{c5Km^T2q*0hZy>#wo z5qT`bI6lc zZEelm`Q`Ji1O5f`=K0rNo31+J;fh?604x#V5B^TrYdyI>6xm803SBfDZf&iLqKnGj zd&o~=+~Kzn{IxZHLPT#u@7-Q9Sm6&vaDs_RQ_Nh0LmR;lizM82vU+KUn3W-p0BPAQ z*OlKUlj8DcYWXX|ZFrn8I>$Ot9ctSWZGt9Jeq3Qp1sjg41zJrao7Z2LW*h>WHazUu zY&{)rTjHlD8;(!n9ImyQMY^kl7`gE{Vq)is0zkH8bLBUQ1(m14zC z*&kOPBtq1yVeN@r6a}(z^l8fPr+VxC_pMt7;I_lo?Qb%%|NWgc>x^~z%h7z?AEQSi zt**PKo~5TkP7dP^*X_R>LEf5$MXkhi(6NCsTiGef4_?gR$n zs=$o{hu{LZVsPmF|3KQiVGjWjuG=pLce%^^r+3K3fjzM9-ji5u1@5)fN(KN~F*tPW z-v!dWK-z;f^1ZC{l|yvuh`t_TJvg*NDg}HT2y8gwjFBT$)f+nY z$;ullZ>+qjG8i9MM6e)KZa+03m$-}nM%q6%4~a8cj)`bN6GOU0862u3wlP|4Nr>3c zy(o71a$VbXupMkzXC}ts57DZ_<+zmq1_ULQGij5DyHHe&LvQ^pii2V)S4h#KR&^re zy7x$2xf<&BQweujkN{Jo+A*m~M~TJ*j%a*GM&mQq?XTO>_|yOXXcX)7B$ZI4Rqr9R zr0~d1WP7jJKwu>(93w}9cElw%J9P3*-uwmn!|-uhL+}H*kB&x2Il)r{@yF?AJLY)F z`oC*k+{2fHFC8=SMI@j{Hf5~42{xTvfHGz54x~y7X>h3jH&iL1Dhj#|5(Vr0@geFJ zvP0bZ8u_MsqhKYI1Cj?R`S%;dVO@6Ep z(X}^XuxT&p!9>yUxO08 z9PsMc8|ckAV~LOWA5d*?=s5Le(U-+DTo~-JjnPjPQg66$UGTsK4_xrT1rJ>Czy%Nd zf8_!C#ur_3tL<;@@OQTR>)IOpbzAYZH#!}_QCB3~xut0do7Ul<@W`J6od7IMMRgt35G&c~9Zf*ZDLb`9(fm zit7h)4LfK>)qx#061R4!9X#VI)K9{P?;f5G0vy2d%e%T7!S{4m#;@2-Px)M75jv zx@3dX@@=%dRNhf-wz^{rIixuRhb&2-){)LuhoVj42LCc}OlKR`Rjb_9fm&9xc6}}Q zZ)of2Y;O-oqOh9~S|vp!^r_BJN7R;&FNH?qx;D2#PJ4@JD5-*UCitxj(U(XOUM(&1 z9D?GF+<>-kZmVzUY#?XNxN^o4zfh_MM-_mOpVRTY+cL75F6m!kWSxIYQ@A7QZ?B8g zwU+rmP1bhoQW95*xD*oTTdX)jf(fnR$PN*XAL|T7c0fd3>zZ&wC>X_(y&+W2=+l2o zXa`BXSit;S>sq7^QarnA!>Uz*b^fX~{?PVlq^>?1+}zpN7>Wex94**T7p;@%`b0(_ zASrUD?9xG(h~}r`;7|mTqfoOG-*P<%zphPGQkMy=tro_N%7X$}oMA}?6f#(rv3gk( z#5ZekwzZ6U^|{xy&T=?UI)Xxwa#x7PXpe;J5y;eBDjNKFRRRv3sHK`47``J+1aM|F zq}vO@Px#HzP%AYFxruf|<^I*pl2e`F)f_>Dz~h~0iwoEPRu9n5o?1TMPtc99Kc%KY zhxF4h;HQ`_cjAa)KZG%D8^ve{b<;ZW&4Y2SD~>{2+yi4TKQ}Vs#sR>}=SM~^Mp}!M zZg)NU!pI2SV))vNBO^DUyyxi1$WEmDUm6*?kLq8=JuIZ{$3{k8L;4ib50P&D)yT+r zOjUnGx)kXUc9}OIZNe^fC(`3c@1uHbm7hYo?cYI(t^c~zOq=%U&;*R$bq}Sq^j(3sL5f5F)t?QVvJ=YkQ>GjdwR)XW+IUD%- z$OxXXg`r+LvcVg17+Z+HBS%I?+98)^=dQ{wxh5xLn{N-ha_o|eE}1$RP(gnK(%hfP z=j91T7x9ha&jqE{Emx(k1o!+*agSRgz1GvH%HA8<##)#dV|IE24C2;KxD`I+E**DKic6Tp_g!j@0%`~>R7 zDXLxnFLphBcYGb%cUuB|n_b_6`tP9rFA4Q$?E1SkEMWJIK>b!_$@nRU;hW7;m@puIFZ{b+} z4#cj_MyuH@5VE3o-VJe zSmIK=Plc?txKsbUQ|21Ny^D8wT#u1lpk25wc;F*Fpx*~OJRZV5%jZn-t&@5Cx}N4PWM zuW9z*8j6I=%Ff5<|K_?{JlnA2JO+G}53Brj?d`O&r`;``Zfps+G{Th~9XPd!h8ya3 z_-8Jjd&%4d3upcR(uXuweUy(rs=gX$R2@;9_yn5gHX?;&IiB97G2ky8^{HN5tM0zw} zv`gau3^&pw{-f$5{RFx_5yyeQje8or+c-88*L1U5V`iV{D7lBy*Z<^F-gPa}mKI)5dHNv)*Vw{V!tr?{MD64K1pEO&?(u>-r|(4N z@<;ywkns)V`Q!YD$TQ;@6@Hjb6(;i%_Yd&rqvzkUnCk`9dM4(74JH0A@@~&0KN5p} zUBOe9L#PlmOr=lf_Y>9$eB^rGYbC4)k@vi>1kuAQp0hbbZW`}U;m?I0ByNKqv+{gc zKqNlqT@IpMlqD6sEYIhi?)oaqY4mly%T(BCjv6>qyow_ z<6lwqmZj}M-e=H@lf092$+5Y{PpB}pkeHMhK`KlW1-}uaLOCZDW*Xn2!s4{0pqawE+a5~6f*Z+D5w7hA8CuS_aIqEb!0M2r+1Th zuM!kZ1f>t=CU!-CLe5C{B!`x9-wD)?$pxX2j$iSB+xwrojlNLKvWtk&?61khZ;P<( z@v^ir8lIC!LGNR(5Ip3WpHG4&?(tlawutbr z1&U`y4&~9B#3F#d401#cbA66TR`H1d!7ULa?#=i}+lY@zt}jBCx2))A!1eb7)9bE8 zHowI46spZ#(9|$bfxl_Ck_BcJ9{q5e_mPI?D5|UQZIFQ@8g{KGcR>`?+?@8Lt?W0BS_N8T^yPS{n6`bcu6ZQq{tD&OWN4N z-IS-%Abnzf9#FHzXplb1w~{QN;UK*%X9Dv0)gNh4`YhL9Q8t$o(3~aA`UU~aN1?vk zd=2V*%=ZBCnfa*AH17vI&kQ0z#$1fr3FbIhR%RN2&obKqFE?Mo=UkJNU0_Z`{t`16 zm^YY>z`4oXiu`8tr+{xUj{v8|bOCaQc_TjWH2)KyG4mn7zhIVw^GHDz@*bmL5{SKq z9LLf>olo4ePeAM3^!I$!(q0qI_O9NT@p9^P!#Ow2XW_O$Q;=VoxA5l_GA$#R{)Pp~&-Xe5Sbu)IDN>^;>{cTo(Qk9L9KlE|GST z2(TilCOjsPCb7ajKq|>OBan_Oq|9Z6P&fylhWHQ?+(gP(z^hsJ=DrGEbyQEP8x-jV z4dAjUD(V4aZVJdT_kb{Swz-|~EkGH+8(EBF``Kn#$am%7{@hqEBd)!=}>{%>~o4rU2xox~zwRp0z+C(f}oG3ju1Z zL6Nyh%QULtM=N2r)>WRXW*{l|9~<-mqq zLkuONoDIZ$LyR-7{?~T1Sxd+%wH}Xpeos8AEkyNWNl-%QwUemVyZS%eq#o&RsE9Qqgnuba_4o_TQXoOZyj4{c;?2 zdRPA=yFK4S?JKHy@9sQ&+lalYiu-owHH2E&uf~!W%>Ivi4uSMHs`8259-0b&uZj=u z_Iw-y-cWI}32=qo$0#_JJ#?mlxm{iR{i>#O+D(HpU;!3C`h#14~2b~z6 z4R+C3NHoTZu+U2~@z_0Zjr-oFwxXsUyNI%8|3(kB+(gkfW`9E-{eIjeRocYdqSFrn zgVubnBbD2m0YnY0`I0wYA3%2E_U7-|+^hhnY`MzIX+VCI9gf=E=#5JVa$NKCcLF(g zkL!xGN0D*Utm;~kLwSr1v{L&q{?ci*Q%f$_D*iQ;)GkPGe@MJo(eTp3jg+Si6CYdH zPI-xJyid|-p)YbUe^QNRv|CO_s@I~<}n-D-z} zWd(D))eeV9d`#>n_8=>C_cE`T|Ghc6-v%rX^S?JYjr_#iH2-_^O3I0cod3P~E~3n* zQPEhy32k8+;iCJ9Pl|$xR7unLf=QG`6d3EkX~7k@0LARD<*jww*+L=1>~Hd1qZot~ z1K!LQWfNz!zXfqeTKQC2QPqX}}S-#}<)zg1AJ7+fUz zu=@b#!C*6+$rk~HeMn&&2#lFrQZzBoRz*THA6-yxmQoHXX8af+AI-_7^qO6|w#fv_ z(YFJH8%h^Al`CDNl*@#xOPi&kHJ+CheVw9*pmA|8_{7BNQ#e`~D=x8!mRyF*qx)dBM1ozyCf6*dJXb);^ZZOr z6_+b?Fy(Qk>|!vbzCH)-nM@Jpu51_OJx$2Fn=@&BWdX+^Ynk`UfbyG+ zY%-uhgJqqkmFi|^qw}yksERTMnIx8d%rk@P`vmC&R8KqvsjT;YjU{kRC}0He;Yn8(QKcsHN5K4aen?>6z&J@r|1DtELfGX>7=h_B z?z4fHB3{7-Pac(UZ5 z1^wwV?jxw1R(*w+kgr|+_ugh+i{hAKs=>12HuEkjPLstaZu3#pmMG>MO$ytRJklFB zo6CS&s_HCXdp%}s@~f-=q1$})+qIKaU4>Z>Ous7Clsv5Tq8~q{%j`$>ym2HGBRg7a zIx0%_2)Q!z2^U9O_`uLY6&PB)Q;=q&c zNO1Xx@6Yikv@T#p$HA*0?I0j&u8K_phow>1b>;iWEq_IgLB5hBPR7Mx$|srG>i{Y> z628jLZt3O);|u8S0Y4IeCnhFvd)T{5Ox(~V(% zI^!^M4B_g3SV*WiRz*Es#(i^8TTH{`6tc+G|KQHzhf%tm;I96CJKYpoc}9k;J-*XT z!%eACOs;hG5A1YrfwmKje3~|0{X;w5|BUiPBYy$t-Th~GdfYD&b0dqQ!qvZLS6O{$ z1Wltk9NX!p-OQz0!jYZsFM-2iBmHi0H2YV&EfkmP>Z3c|X(%reN;&29Zj+qwc0S2)V@&pV$mai2)py=zlEov6 z^V!|PB12nrYPYc1tu5Yjn>20;m?`5PybZ=(4iPVku6N};X_WYWt1xa4a5?$y#o5%a z(5km_lKJ8iS%ktgA^lQ2@is9TzLHLKm>T84LkHQS3+J$$uYlJBLfC{05?v~cwnP+>l3$SiuoN?zeYgN{WoBd^d`K1 za~eepy-H79cCbDUr8x!Q%`+*BBZZyjHgIoKhJ3iwEJZP_T)StNIRNB#RlIYT`2dQa z(oMR{Tnpq5MSFIq=|^#^YNdO3c_R4T_J34yyKh(KrL(0rpI2Im`o26F*ZXi}>7_nV z`T<1Dzix&^A_!f^eLVo@H#c;!`BS7P&?L_h>QbsfPrFSRHh-fu3=u|#EsD1g8Fr~q z9Uc~TU8YJkLh&U+ahgnb19Ocag!ePApD9(iF7ECcMeOTe_0&NOHIbh>0nlNnvceW!rV>2za88FdKg!0B*f#-%bIYD7Pq5m3?L zp`(q9(jO3*TiE1ZgW4$d=$Spf&CC4FG~&7aFfqMqoOERv=xICk( zfW9zlPGuPx%QIZr(0Gia4!tmkWt91<3ZQ3!;mXd)5M*UO0}u~qRN*y@ssbwe%21vQ zc4>ltnHK`e#t=$+xp8Hw7CED|s$gj;5o9bRS!IS)#4N!o6cAqmBrDIDmR*qHnlx@w zo{{g(Eykn`oggJgDGmSTP8XWw6&p&y3}T<3C{@ZVuz~#YjJPU=5YCG1I(TMADaorS z*(p>V!yRrRO^Y)Ost1)J-C)iH#(3zJ+JlMgwHG|+c)^?8KE8PSq+KRVP1jD(&`!^E za4+-BD3#`B+0X=YvmK2oe3e7?=W3hs&S{2x>EQxlBto<>LFp??$t6V^22oW71R3Ly zUY4bGDi*#(vzL9&)R-k2CSsCkOQkZ@kYg1a5h-ONe6TP*H!#M_z?cvZjEMya5iyB+ zpx=!^UY?Nw9c3RN5oN+K42_fBMsnR0G>6aGU8V}3!wb`F`-Ixk<nIq#bH?ckQl3OOJ%WJnteG1|cCBs*ZfFgDi{i)4x zbZ;Hpc7VF#ozi`dzqxIxCy}%6^6K&lni~yLF=sf9Ke*sY*?pN zgl$jbkK;_f5vgGqe}UtX&;kvA$V~F&B0nF0bU?ikf35ht6@R8N$;?T|Qi~bl<1T`U zoznlH-1q5&jxJqv)6RXEK3>2F=LSnN^}{``bmI-qPYm#YvNf4%q3ZT25u>s6Zu#q#zUODvZLHMU=~BiOR%yf6KEMXstIY@gyX;~$Jj`>=sU>{j7kS=BUnkGHpO1H?oAV5w^(kzh%1ii|Z}6>4W2l`XZVWwG)S51%53CC?Y!8WS;9;EePw*6 z?@?a*DRW9OFZv`O=X>tqhxyp=^I1)Ns_%MUU}?^78M^N>M1Tn zNXYo7kZ{u@kcMb#eFLM2XP@9a%1fcEYaaJg0!!yp+Q5s+f@`?(nbkbooKirD6MzJS z%yM3OgUFR$2k*VY)864(7xDSyZ5mhleo(y&iFJgy)q@f(JEvW{exlOcUPylJYg3 z6p!j_xAygMU{LoIe)hghP81)aJN}M})XiMfxkSfw2^Z^A-BLd89ntPrZ{-X2^0d8t z&NcW%H}T!ijce!g;&=G8y?k6ZFM5abchNca@$7AIMjy|(p64U}_VcW39_Bf|FM?$2 z9lQ|UF{60C629uB58tc&(ogctS9#VpUU-6!yPKz7!x#FN@p0&+d--DI3Loazyvdh9 z{54?G%u73Y{$7gl{1bdJ@pFB0FTWTW17b5>GanL~mH3*tZz<1h;&Zn1j3a#BKl8DT z9O81fB7~vob$smCdFFC~%zewzOh1LG2YA|68V5@5=Xuwme61?;tvvk%pR$$b?_jP_8{6RFd|x-u=O(5qGhdN5wfdlvEB_4lP337n<#{JC{!cG~&~)=U z4EnAem^aK>MZN>RE=W4S4fDDJ-_z(8`&^mkONN1Ay{V9VQ3_umNNKb+`{~2?eQA;J zVcGX}r8$kp6%#{}FxZ?{kW@b_p&rdj!=P!C>uLe~spu`Hs{@0K@Ygl`qBm&?;K!7< zyqFs&?ty{)ggL!{PcdtXcs|w?%YDz8^9y{}o0k>(9`=K1I$=J$*uj0(lRFY$~no;6Plcn5gqZa!uw&v=7Rt>#mF@A0CC zs8D<@FF=1nWM)3ajZVyVG&AOdv(KDe$aDAciH8Jl^usqF2J;t;BFvss3ekFZP;31B&1(0H$^#_bM+y)x$jV z1UJ56mSJSYN9N!~%3-`+R#()w)O9rJ>SnwOX-;E(qod65?%H5uU2Aj84%Shpa=|Dx z?F?>?gzFkean{+^(Y&P%@1vz(O=9{r&voLZ)r1giZe#6ufpauyzcCx2XeiQHhu7l@ z8T9&O*3pDdzs-%lV?cgtY^mEq&gl#`z#I~|B^1>@3kK;e(ep2bQZjqV0-+zdH`-d) zaSQ7R3Yr$OTYQ`&0IXTOn#9_+3I*szuOib{*BVkuVTZcrAWlkKtFRI@^QM`u3oF=XVhAAQnH36>ei_y|((+ zcAK!O#?G#;!E43YdhuHEO85wGwt_<%8-l_I^xklYp!Z4#>5ap|)^J-h;vv*PC=dx; zB`%6z#j?3pUA;OkB2a4u)~yNDlKa7SJ4kKB6>EXm44tD9uoCYF4~ln5Bd8#_uAvdf z*tWe_$C*~ueEd=d9T5#$0|(pHl^dCSJGOLPw7E5emmaf~m9>>Y`F?3(Wk+yxbF{;D zqIzGmE%2&9pti)*#NX>qTE=^0n$V>4udx>gDG)sHz5j7jF}{W4)b) zwl_!F`n4;r4X#{44MDk@$`#kbT@rfry2{n)1>%L!LA*UYsNWCX4sV4cHusthapzQ8 zHn?g99E{g;Q(NKPTWA2;g1Y@EvdC;!7uixDry}hmTejMOb?ZN_lv`iBE&z?dj~bqy zw$sYd`;6n-DUFr3L3)2RQ}6Mv54Z2IIoDLJw)0o73#d2NgFm`GUc9z7DBjUdan{j% zE8Zh+Bd=dk8@G5h^7VMvnM&JDP~hQ_0|!`-q-P=<<)gtn`$ zstw2nSXcQ8yCSe=MJ07Pj6(1vg{BOD_z#K+f$IYwQ_Uw|=S~h*|rjE6$Vnzd`Lsz#)MoPNbm#<=b!B95A( z^!9%ZA{*3O{k5%v&$^YX8M;bv{f3&Fwd-mFD}yVls{(6k*E85AI(Jjv(G!AK4KU?~3n0V2}Rp_M~^CGaB~L{p&D}YZ5sUMk5rKacS_D zil0Py5<@YRK-IQ-1Q|5yh+-(guoJn3)k_6Yi8rM)dJ#MmZ{${rD|nb1s4g0ACc}w| zlNZF`}00 z$oM1yVkM!%8?yzODqdON5viYxIZ)2w<@IcCQ@AxWH?*y}e(uU}eP=7WeFuI`G1@*y z#x?^1o7>qD0Tum(L1-@4Fu_X~&cT4vxqZ%-w$8a?2v0!46i%y&1iFO6+`3469iu6$ zqr3^`;MMujIkX^XqoSIFRW=kwrkN_#+JWGp2n(>NC8MZ!l0BqqOY`QrTk7l2RdxP+ zZAPLxquMlA==Twb9XqfPisCoX8iiV-h1G0F05QBEqkkM^yTEFIf})m24*{VbflRz* zq#H0{lM<*AQ!}BGsp^+Tw!>a3i_nza9uQ|q;>(sq)%h>%Iq?wipGK0g@R&EwD&6cZ zY-Z{5i%&e~gLE|fiGZ7Uf@@xpLR5)g!8awrFHvy)USx&Ns*o|*ShjD6gphu8ZNQ(w z#xVV!V*$hmJv<0ksRU#95(9FQw^7Z?fb?pSe^L4?IULxSR_H%gp zZvB-h@Gl2E55JI5u}LziDOG6-e0rpCG`YJ4JolW(&SNR?|0xB0e+u{ufcvFt37-MP zx1WCDVN(K_{UHS(dX{Z8{j+ggJ{p`JgeCv@6@Rx9GcN`HDgngf4=x*CxZd;rg_&_ySKbhQ$HGtYj%xP;;<8G`GABmGPY`28v1KS%+m zZ>NsN|8NTYU!{Pb67XD>{7jUIb{vg=p@8Sw-!s+^!puv7zXEXbGuz~F04h-vm6*EM>k;iIxAX_#{7;^FiQ=F9z~!$~;QuiN94E!2 z@-F~f^k3cIK~L8tfuDQMvvc&V?a}mHs_^ygl4{9@)uh0$SNO?a*rP9+Qe5eK0^1cI z`UVfdlOLJyPr?6NDd3L-PVt}IzRxQD$q#tG0=Qr4;7m@Z;P3L_nHeXd%1;D5-^`2; zkP1GP;G^JQCg8a&`2oOH3ZDE(|8*(&u=Vwk==}09cBOTjn}gB1E!coWJEHi}Ev(t_ zV_Bgs&ElLT+KSy{xD6YWV6Y(^+|m->T-OrBW;%kivd-<;0<_}y=kRl8%~?Wx;Yo3&SfW-rD9_Ylwfcb z4p0KYz?zl8APcU%ZcXLtsucj^yfhfFRIRmg9SdGvz4ofg>fqW{tJdR~rMB{_>Oc@H zVyuDNqT%+6tE;Q7S`l1Oz5uVLaBkMVcB0K~cI_n#orhw{ z2VgcDiNqd@wzTKMS`$?ZR@JT!#v846^$KdTTKc&`;*rdvy))X8$kRU9NdPah5qP?2;XHOfhvyfctM z#L7E%v?64Yq9H`uq;q0`Z)fG=XYX*ZQx3Cm$Q|9`0B!DUZfTfe2%;_$YN;avm1}Q_vT|W=IkM$j!YERP&WX#T zbl0t1j9%pt{O|{E?UaX_)RfhPn@e^{@{rSj|(B`1B8qSxuv1Z+A>NxbO%#!0Wwk96u! zL_dfA6R7_${3esu{}Cl$r&>OiRpLt4zYb75*l62-OwsGquM{R7$#~()+KL*gCCN@uPX@_|fGP$YkSBqv_wh>r)%oWPDxLDZQa5$3d^p zi|_qA>Hi8^a*>v=&sp~=ditI+UDW^R(sFe>eh)B0(e(PC)*~ zMK7W8&jU*S={QK_G@S;|NLBCefC;PAVE0W-u6!Ntm*QcN_`X7>>&Yzu^E;>`)cb#}8-;$+1rT-KZ>CKH= q9XN0AwM6aN3e0VB*l-GD{JY@YIOR-$0WwhNd!qn_WuCI19Ef# diff --git a/src/server.c b/src/server.c index 5a7b524..dedaab7 100644 --- a/src/server.c +++ b/src/server.c @@ -22,6 +22,8 @@ inote_t notes[DATABASESIZE] = { {"Eric", "Eric", "Lock in and finish this program by the end of day", 2}, }; +/* unused, but could be useful for debugging */ +#if 0 void print_notes() { for (int i = 0; i < NOTES_SIZE; i++) @@ -34,12 +36,14 @@ void print_notes() ); } } +#endif // method and URL strings are passed by reference void process_request_line(char *request_line, char **method, char **URL) { printf("processing request line: %s\n", request_line); - char del[] = " "; + const char del[] = " "; + /* FIXME: strok is not thread safe, but that's ok here */ *method = strtok(request_line, del); /*Tokenize the request line on the basis of space, and extract the first word*/ *URL = strtok(NULL, del); /*Extract the URL*/ } @@ -49,8 +53,8 @@ void query_database(unsigned int *ids, const unsigned int *num_ids, QueryParamNo // Save param and the value accordingly unsigned int id_key = UINT_MAX; - char *to_key = NULL; - char *from_key = NULL; + const char *to_key = NULL; + const char *from_key = NULL; // Populate datatypes from query params QueryParamNode_t *curr = *head; @@ -104,11 +108,9 @@ void query_database(unsigned int *ids, const unsigned int *num_ids, QueryParamNo inote_t create_note(QueryParamNode_t **head) { // Save param and the value accordingly - - unsigned int id_key = UINT_MAX; - char *to_key = NULL; - char *from_key = NULL; - char *note_key = NULL; + const char *to_key = NULL; + const char *from_key = NULL; + const char *note_key = NULL; unsigned int count = 0; @@ -159,7 +161,7 @@ inote_t create_note(QueryParamNode_t **head) // Construct the thext response body // returns the length of the response data -unsigned int construct_html_table(char** response, const size_t ARRSIZE, unsigned int *selected_ids) +unsigned int construct_html_table(char** response, const size_t ARRSIZE, const unsigned int *selected_ids) { // Construct table strcpy(*response, @@ -226,17 +228,15 @@ unsigned int construct_html_header(char** header, char** response) return strlen(*header); } -char * process_GET_request(char *URL, unsigned int *response_len) +char * process_GET_request(const char *URL, unsigned int *response_len) { - char *strid = NULL, *to = NULL, *from = NULL; - // return a linked list of key, value pairs parsed from query string QueryParamNode_t *head = parse_query_string(URL); unsigned int selected_ids[NOTES_SIZE]; - // Initialize all selected_ids to UINT_MAX (aka NULL) - memset(selected_ids, UINT_MAX, sizeof(selected_ids)); + // Initialize all selected_ids to NUL + memset(selected_ids, 0, sizeof(selected_ids)); query_database(selected_ids, &NOTES_SIZE, &head); @@ -283,8 +283,8 @@ char * process_POST_request(char *buffer, unsigned int *response_len) const size_t ARRSIZE = sizeof(notes) / sizeof(inote_t); unsigned int selected_ids[ARRSIZE]; - // Initialize all selected_ids to UINT_MAX (aka NULL) - memset(selected_ids, UINT_MAX, sizeof(selected_ids)); + // Initialize all selected_ids to NUL + memset(selected_ids, 0, sizeof(selected_ids)); inote_t new_note = create_note(&head); @@ -304,16 +304,17 @@ char * process_POST_request(char *buffer, unsigned int *response_len) free(head); head = cur; } + static const int max_resp_size = 248; + + char *response = calloc(1, max_resp_size); + + /* FIXME: check returned value, as if it's equal to max_resp_size, the answer was probably clipped */ + /* Instead, let's nul-terminate response in case the note is larger than max_resp_size chars */ + snprintf(response, max_resp_size, "Added note to database with id %04u.\n", new_note.id); + response[max_resp_size-1] = '\0'; - char *response = calloc(1, 248); - strcpy(response, "Added note to database with id "); - char id_str[4]; - sprintf(id_str, "%u", new_note.id); - strcat(response, id_str); - strcat(response, ".\n"); - char *header = calloc(1, 248); - unsigned int content_len_str = construct_html_header(&header, &response); - *response_len = strlen(header); + char *header = calloc(1, max_resp_size); + *response_len = construct_html_header(&header, &response); free(response); return header; } diff --git a/src/server.h b/src/server.h index 77b5619..ecb4f1a 100644 --- a/src/server.h +++ b/src/server.h @@ -11,11 +11,5 @@ typedef struct inote{ // method and URL strings are passed by reference void process_request_line(char *request_line, char **method, char **URL); -void string_space_trim(char *string); -inote_t create_note(QueryParamNode_t **head); -void query_database(unsigned int *ids, const unsigned int *num_ids, QueryParamNode_t **head); -void print_notes(); -unsigned int construct_html_header(char** header, char** response); -unsigned int construct_html_table(char** response, const size_t ARRSIZE, unsigned int *selected_ids); -char * process_GET_request(char *URL, unsigned int *response_len); +char * process_GET_request(const char *URL, unsigned int *response_len); char * process_POST_request(char *buffer, unsigned int *response_len); From d840bc409160efb9e8269853d3a13475da930c1c Mon Sep 17 00:00:00 2001 From: Stephane Provost Date: Wed, 25 Sep 2024 16:23:45 +0200 Subject: [PATCH 2/2] Fixed cppcheck issues --- src/main.c | 9 +++++++-- src/queryparams.c | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main.c b/src/main.c index 10b3aeb..b4f0b1f 100644 --- a/src/main.c +++ b/src/main.c @@ -91,7 +91,7 @@ void service_client(const int master_socket_fd) int sent_recv_bytes = 0; - int addr_len = sizeof(struct sockaddr); + socklen_t addr_len = sizeof(struct sockaddr); fd_set readfds; @@ -215,9 +215,14 @@ void service_client(const int master_socket_fd) char *method = NULL; char *URL = NULL; - char del[] = "\n"; + const char del[] = "\n"; char *buffer_copy = strdup(DATA_BUFFER); + if( !buffer_copy ){ + printf("Cannot duplicate buffer?\n"); + close(comm_socket_fd); + break; + } request_line = strtok(buffer_copy, del); diff --git a/src/queryparams.c b/src/queryparams.c index e7e2d02..4936564 100644 --- a/src/queryparams.c +++ b/src/queryparams.c @@ -41,7 +41,7 @@ QueryParamNode_t * parse_query_string(const char *query_string) tok=otok; if (!value || !key) { - printf("Error with a ghost param! {%s:%s}\n", key, value); + printf("Error with a ghost param! {%s:%s}\n", key? key : "null", value? value : "null"); continue; }