From 2cb9a8b96354c59a6ae93df57b358c00962bef61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 17 Apr 2020 17:52:01 +0200 Subject: [PATCH 1/2] test-resolve: add a bunch more packets for testing Let's append the date to the domain in the file name, to be able to have multiple versions for the same domain. There is no particular rhyme or reason to the domains being used: I just pulled a few domains that happened to be present in issues reported on github, even though the issues were not about pretty printing. --- test/test-resolve/com~20200417.pkts | Bin 0 -> 726 bytes ...{google.com.pkts => google.com~20160131.pkts} | Bin test/test-resolve/google.com~20200417.pkts | Bin 0 -> 352 bytes test/test-resolve/michigan.gov~20200417.pkts | Bin 0 -> 131 bytes test/test-resolve/org~20200417.pkts | Bin 0 -> 1104 bytes test/test-resolve/vdwaa.nl~20200417.pkts | Bin 0 -> 1230 bytes 6 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 test/test-resolve/com~20200417.pkts rename test/test-resolve/{google.com.pkts => google.com~20160131.pkts} (100%) create mode 100644 test/test-resolve/google.com~20200417.pkts create mode 100644 test/test-resolve/michigan.gov~20200417.pkts create mode 100644 test/test-resolve/org~20200417.pkts create mode 100644 test/test-resolve/vdwaa.nl~20200417.pkts diff --git a/test/test-resolve/com~20200417.pkts b/test/test-resolve/com~20200417.pkts new file mode 100644 index 0000000000000000000000000000000000000000..7927a791de6add27d14ad399c5e466e96bd7fe8e GIT binary patch literal 726 zcmdna00GR&`MC@X1`Lc0i~-sVD;OD=IhcX$Q%P3p7Ms_ZD*SXTIO!O{%PQ76CF)Ug z#671o?e$aFNinYv6q~lhUHDSUdHE{l3BSsi*Sc8+&J=JvWnj0rCjYV4sgDN(m;BT_{f#SSLtL5sI|GH&rn=G@^Ox6o_M~J=NO7L} zvR<>&KW}c@2ZmQCr)}DG@u$z{Mv+B990_)7zVRQeS9QE}(dOmH?f9L)?PziM;|T(j zPM*kpyP~%8Nz}BPr+L<{3D+{5WU%Xu%(MSf+8RF``%^bv=vDCB(+ONZUsa1OnrkGV zeeyYLL*EwmId9TS_wH-?Uow3XM{~we&baj44}LH5u12mhOf^s8ooks~bE1W-wrcIv zr+bT(ZqEz8&X^K)tMbQIrmp92bj`bp??gNEeY*5q$Ngc~`JNW9Yd5;@%g>QZx3;;~ zDk?MeuP7sy&}U?0WMt-GWIlW@+;_(5o1%5R1(!;8c%I_pdpqm@(K}}*xO--@rN)?^ z=GbiGD=y7gvpDR_G^V6gNt4h1da=CsVwHEK$-QwGS_}ZLZ-Sx@u-rhvD z-TzjUzn#5^gMX2tyu_XLCf_D0Z}d~z#k{G;e(MT_GbQ0y=UuW=USykmR+(kW$>f>u zucj69y6HLWG7Hm}F8q*`v)t+53US8ue-?6k^WF5kb=#MhJ?>ldilZEF#CkS)u5Ze9 zd)GAcYDepv_el$bV=lit;JIsA%DtQ453&V+QM|GKV59pUxwGP-$NjZ-7bR5*$ll#F zXYn0_lfgn7W&aZo%bEDAr)@gW6 XV0KWL*hpbBml14kAp^^rn*x0R)?!6> literal 0 HcmV?d00001 diff --git a/test/test-resolve/michigan.gov~20200417.pkts b/test/test-resolve/michigan.gov~20200417.pkts new file mode 100644 index 0000000000000000000000000000000000000000..5db23aafa2e2fc8762ecb4afc04390122df7a4ec GIT binary patch literal 131 zcmWG%fB=r%%;b#B^u#>o^!zdg1~vvp1_s^|27A^-LtSH2mc;DDT;{yg5(eJHl-$g` z%;J)w#FG3X*5Z=Hl2oSLOs3LehFGceLktWS4h#%@0t^gw6F{^KcHX~# z%S_WiXLY5oYp=|=%p?6~&Qb@L#oXB@$hWB~k|VKu&6`Cp)+ZJppPwkSoab}StBDt{ zz7l<(uJQ4x;<0;`HAh)?HN>lxv}x=xxfUgIV(yPiT1|3%o$RYicD?bqG>^6VKdY0W z*@>)_Ehcg7)A2j+!5ap%&gS~N^JW#Fy214`R%VW)%~y}~hjmU}0ANyE|J12%jKSt zhjvTKdp8I?KIbK$omskd4p*1A>TIj+{95-+=PWhcTqghizIa5zim3dEHMB2@Kx^B{>+je zHJ+Oo6>};tPQD*1nf$3me1DqNi4_yN{BCy_3*X;!#?^Pp;Vh%OC$u*t7)#vK`J*>U zv`hWT-GCeK6eY~=S*LVc<1V=-?*p$@BKRKnBGGP>1RRjoQn;ggmfIO z^7t#(Fh6slap#fre;$>>r&0qqm7eZq)n`kK3465c_JBl}8@oKJ2ai1lzS}Mt7 zd#T>J&!tNh9c$}8ZRq#66Ip(+pqIDOWRkBsB=JB~k2WyxF$Qd4kZ`@t&S-J;{N&A< z$3yE_MSradXXBUtEp*Trt8x{fa;6)dr>;-P895$&rvoo6c{@Q%&Q^=_;3l1{mD-Z8tAm92 XndNUhi2ty`dj0wNoznm6e>?>MI=Ica literal 0 HcmV?d00001 diff --git a/test/test-resolve/vdwaa.nl~20200417.pkts b/test/test-resolve/vdwaa.nl~20200417.pkts new file mode 100644 index 0000000000000000000000000000000000000000..2964101083defcbfe0ba9e957d77e2b5e1936419 GIT binary patch literal 1230 zcmbQk00FFJDdmZYOnEsB3}ON%pA->_BsJ!i(lK4{?^`c=UVdHr$$+} zvdd-4>RB_b9an`mc3-|BwsQIdqc69$%uYHmaxC4K`lI5#*Jr8oX4x}#zx`+BvH51Y zQq2m1)oaYyQ|4)XR+Osusnu&`Zr@y6ap#xltN%wCFWh`T(^db@(PQ>(JNlRG5?>Y< z%sOdNZBN+wf@%h38Ae=gWaMCEgt)O)*YIcI+@tQHr=zC`Oncf}l~^;^KH+EU+$6np z>Bgy2OV+Mm-BjoH^K?;2`0jffSBTeJw7>Gmw=nN{+Ur;{BlU7GWA%*s{)=1JtgcIx zc)5eIJ+@ywLhRN{vA{kNwxGFP4-dQ2el=%$9gdd8yV*B?#WWcibIgI$V*k6S=|x=pLV)r(s> z{ZgL3+35CIaQPt}Igtx%Pw{BYnKWIjNbANFbBFGj<2!?Mgd~klgeq>^G+!Ytrlw@p z&g(aqpRRcouw~8rynfY5w;nWnna1<~H*Z3|s}0XuEzEe-hsL8AQrxm9F*YzTFgGwV zIz(dX5CH06uux)fbxF_9PtQr!EzT@S)h$ac%1p~lPAtjH&$IRP_AQO5%t&;qbg?YY zb1Cw7E%6OVGYRtubPF}IOtZ8!jHvX?%L&g83RS_hfC*}W0DE3>RccYbA#-9yGAPjz zq1Fhd))&)UHmJFl=;m@|p;885YHyIhG!&Tf z!J)wte`E3;%HhrskxU6sP7T7gZLN=;arsW9newhngtHz{Tnq9N-(l z=)>mj@9*y8%Ixg#%b<(t2AB>>201pc4pT0O246={AEGsxkfX_%98E^(n)Gq|Nt!`~ R#nC6k2wPAP)@F!J8vu!$VUYj; literal 0 HcmV?d00001 From 0136b1d1e091809065cfa5c9824664cacfdb5655 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 17 Apr 2020 18:29:23 +0200 Subject: [PATCH 2/2] resolvectl: fix indentation of hexdump'ed packets ebf963c551e1077abaa5e0fa0f330e6d1c23565e changed the 'sep' argument to always be either " " or "\n", which broke the indentation logic for the first line in base64_append_width(). Since it now always is one character, and never NULL, let's change the type to char and simplify the logic a bit. $ COLUMNS=30 build/test-dns-packet test/test-resolve/org~20200417.pkts ============== test/test-resolve/org~20200417.pkts ============== org IN DNSKEY 256 3 RSASHA1-NSEC3-SHA1 AwEAAcLPVEcg0hFBheXQf QOqqLiRgckk69o2KTAsq3 lNRY0c9mnEjzZDGsGmXNy 2EQ6yelkIYYus7KLor2Fz x59hEqcM82zqkdHV6hXvZ yjxxSHG3nl8xQS6gF8mdI YouDTWWhTInfjSKoIeDok Hq3S67EjSngV7/wVCMTbI amS0NF4H -- Flags: ZONE_KEY -- Key tag: 37022 ... $ COLUMNS=120 build/test-dns-packet test/test-resolve/org~20200417.pkts ============== test/test-resolve/org~20200417.pkts ============== org IN DNSKEY 256 3 RSASHA1-NSEC3-SHA1 AwEAAcLPVEcg0hFBheXQfQOqqLiRgckk69o2KTAsq3lNRY0c9mnEjzZDGsGmXNy2EQ6yelkIYYus7KLor 2Fzx59hEqcM82zqkdHV6hXvZyjxxSHG3nl8xQS6gF8mdIYouDTWWhTInfjSKoIeDokHq3S67EjSngV7/w VCMTbIamS0NF4H -- Flags: ZONE_KEY -- Key tag: 37022 ... --- src/basic/hexdecoct.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/basic/hexdecoct.c b/src/basic/hexdecoct.c index 5e425b0231..96f7b9ed0f 100644 --- a/src/basic/hexdecoct.c +++ b/src/basic/hexdecoct.c @@ -599,13 +599,13 @@ ssize_t base64mem(const void *p, size_t l, char **out) { static int base64_append_width( char **prefix, int plen, - const char *sep, int indent, + char sep, int indent, const void *p, size_t l, int width) { _cleanup_free_ char *x = NULL; char *t, *s; - ssize_t len, slen, avail, line, lines; + ssize_t len, avail, line, lines; len = base64mem(p, l, &x); if (len <= 0) @@ -613,21 +613,20 @@ static int base64_append_width( lines = DIV_ROUND_UP(len, width); - slen = strlen_ptr(sep); - if (plen >= SSIZE_MAX - 1 - slen || - lines > (SSIZE_MAX - plen - 1 - slen) / (indent + width + 1)) + if ((size_t) plen >= SSIZE_MAX - 1 - 1 || + lines > (SSIZE_MAX - plen - 1 - 1) / (indent + width + 1)) return -ENOMEM; - t = realloc(*prefix, (ssize_t) plen + 1 + slen + (indent + width + 1) * lines); + t = realloc(*prefix, (ssize_t) plen + 1 + 1 + (indent + width + 1) * lines); if (!t) return -ENOMEM; - memcpy_safe(t + plen, sep, slen); + t[plen] = sep; - for (line = 0, s = t + plen + slen, avail = len; line < lines; line++) { + for (line = 0, s = t + plen + 1, avail = len; line < lines; line++) { int act = MIN(width, avail); - if (line > 0 || sep) { + if (line > 0 || sep == '\n') { memset(s, ' ', indent); s += indent; } @@ -650,10 +649,10 @@ int base64_append( if (plen > width / 2 || plen + indent > width) /* leave indent on the left, keep last column free */ - return base64_append_width(prefix, plen, "\n", indent, p, l, width - indent - 1); + return base64_append_width(prefix, plen, '\n', indent, p, l, width - indent - 1); else /* leave plen on the left, keep last column free */ - return base64_append_width(prefix, plen, " ", plen, p, l, width - plen - 1); + return base64_append_width(prefix, plen, ' ', plen + 1, p, l, width - plen - 1); } static int unbase64_next(const char **p, size_t *l) {