From 9a8dfa06abafdac2c478e5c7339d9f9fbb1ab4a2 Mon Sep 17 00:00:00 2001 From: Maxim Biro Date: Sat, 17 Feb 2024 17:26:26 -0500 Subject: [PATCH] fix: save_compatibility_test failing on big-endian systems save_compatibility_test was failing on big-endian systems, as it was written and tested on a little-endian system and savedata is not endianness portable[1]. [1] https://github.com/TokTok/c-toxcore/issues/2693 --- auto_tests/Makefile.inc | 3 ++- auto_tests/data/{save.tox => save.tox.big} | Bin 4347 -> 4503 bytes auto_tests/data/save.tox.little | Bin 0 -> 4542 bytes auto_tests/save_compatibility_test.c | 24 +++++++++++++++------ 4 files changed, 20 insertions(+), 7 deletions(-) rename auto_tests/data/{save.tox => save.tox.big} (54%) create mode 100644 auto_tests/data/save.tox.little diff --git a/auto_tests/Makefile.inc b/auto_tests/Makefile.inc index 1553445d30..6e4882d8e0 100644 --- a/auto_tests/Makefile.inc +++ b/auto_tests/Makefile.inc @@ -240,6 +240,7 @@ endif EXTRA_DIST += \ - $(top_srcdir)/auto_tests/data/save.tox \ + $(top_srcdir)/auto_tests/data/save.tox.big \ + $(top_srcdir)/auto_tests/data/save.tox.little \ $(top_srcdir)/auto_tests/check_compat.h \ $(top_srcdir)/auto_tests/auto_test_support.h diff --git a/auto_tests/data/save.tox b/auto_tests/data/save.tox.big similarity index 54% rename from auto_tests/data/save.tox rename to auto_tests/data/save.tox.big index 03430c8ef8a9dcb1869cd1c722b249eba3411096..dc5fc418538fcc25d4039cc5a6a871c321aa32d1 100644 GIT binary patch literal 4503 zcmZQzU|$U1j-zr3J{d-o^)NXvI}&kT$5Tjv=T_#E~~eC6Tm#lXNS3^a?0F_M87$YvKj z$H2lA{@Z(5)6&1MF7NPlFkLyL)A5#y=k2t$9J4cdE=dZ=>=c*VS1l;UG?iVTq-p7X zzu-%&Qr{Y=DcJTD+!bh3Kl|juIp147SA}<_pGjk6V4CmxVH(ghrJB-rqUkG6e&qeB zvGC))%E?s^ciD6weNt1C8r=U|f$8dYgMCd)_x2_E{aosoQjps<-!tM#U-lE1gQ+Jj zT=e%jJ&&Qe%%5qI;>Jl$OaFiB{d~h@{kvOv{x|2PK2yEG`Zl>tc-qlvTl9}d#xLPz zGV`bkZCdf4W6ABqtS@g(aGt+wGMm;RzvD`}(@iGj_B<06xyo#=!BkS%$_ey>S)TnD zpCw%{V*Aa%>ACFLVZ@XwV0y6h*q)Vw_F8`hnbxE)m1|lmaDZ=9z+q)O6FaTf3kpS- z9_mzhdE(NPN#8DTYqHF{Q^&M(pG11oQo%fr=?A41?uIp`c+?u6KYMzX@}5;^lWx!C zoKk$meUcVapm5jKre(q`YDf3?MrZ%=bZZvyNxL9kZ!mN5?}~3zw-nFRu}b7&QtnHe z+_Y3aI6NS!{pin|H!d50Gs&@ex5)D55J5BSsbuGy{o zl*9JyVkLz{=O@?A>Y4UDo-lrGS}tjJGiP@lW6=YZH;X4oX7x*|g)>$A&T$jaefv4$+fzLzlZ#pgP0OTD zR!Mxh^y}`*LpK}a*z0tSG~WAfUfS3=!|rqD9{(huX`skjCT;b22@B(;UzJ;*m(DfV z^5wO|Bm2PEMup%rGiUs%&&wy)r$i<#lPRR9m)ObL#kgk7u_R!+{XT zloW;BR6Ss^JPJlbU^E0qUI?&{JTH&>cr*k?Ltvmo;F~Fv7?K-UfbA8Qyu{p8pcprh z&FYbwlasFyo?n!c0u*8d3bBEe0~uUEz6FrxCbrE_WJiOz#uc$0G$Nakll}DVnwCCY zl*E3(?Pk~Ou+&A5nx@QKoKfUl{qDQq8otIEhEHVbiS3U>U&_>KTKY^p^z?*(9sbMS su!wyKnas65VF`EL+?i?5MX&VCyq1;&3P@o1i9qT9;D8+^MqCI004=ypp8x;= literal 4347 zcmZQzU|^7!ek-1tj%=Z4bIm(tVno=44Wo$+v6u_x2wHAh&Rmd+BL`CaF4`3bRP zW7Ub9J&jIwww_7laZBA2xMgb622&pIJc96P_Fyt}M&yU{FTGqJtuOYUz?x>A-QEP7tV zmT3duOV_5QE3I$GD!qMBE-S%nro4OFt)m-mh8W+_YI2w`Px)kgQ7lt<_34eXPBcee z)wq7k-B6+CM*;D z(Ti_Cwxwn$0s}-xp=s%96&3M|t>&?!FItYAeYK*GYpBDFTd+yLw$fx1YHd5O8H+(0%fknNG0lasFyo?n!c!Uz;%0}6qaa{(C^ zKqfbkCbnHo)y5T5h`!14g*5+ch2^ewR!Nw b5!(qOvP(tPejF$u|HA?l9IB(lNDKi0fBNpN diff --git a/auto_tests/data/save.tox.little b/auto_tests/data/save.tox.little new file mode 100644 index 0000000000000000000000000000000000000000..e5e0de36b2c0b62ec76485665f2f4ffe3552d32f GIT binary patch literal 4542 zcmZQzU|^7!ek$U1j-zr3J{d-o^)NXvI}&kT$5Tjv=T_#E~~eC6TmWyQ+Czyvglmm!i-56EU= zI48)oCVi<~(^7#0e47FeE8CgaX}w-hD7y4er^3qV0#b$9C`QLh6Rv^I3j5$5{2=+b+pC!00QY?;hFszRHVudtaKvubOgjD3es z!<{4IN|(RYrHO22UbHdGDT&Fuh>K}Si&k&bvK3!f9$3HX!dh-0c3CCu*aj^tRw+yO z4|W%}`$-+_o|VlMm3MPi)6#Y2QF?cHvVLXw|DP7Ov+U}2*Ziw{7)_qO+ABJtkYBTo z$;7xbt7-WXZ(mELO=rDW7M${F>`JKLo^eY{fdI7r7x<@q&8{)QWO4r=Wm~6 z+{|plhns`X#_{j)ySMMy>qH|a<{z2rO)CyqRvu(_a@Sw;^VZR`VN2K8S}MzA#|!3K z#BFTw@!BoNw4(eX*Dj0WkLsODj2AI>^=*#}cPX-a-`}RccjAw}nCNezb54f1Fqy3q zo6xlM+>fGP2MP^m*KBKA9xQJ2{G{mFC@E>Lqs-fv?sj`B>BnT|{Y<%O#gz?vi>^9u zOOWMu4+zwJtnt{j(N0DGn!K4o!mc$ZzuGhH489T6wDg*OQf<5b5~($_LVq~y{Fsc3M?qzcCyVkfbw_jxT;;Wnncl^Q{ zg%_24OsdjCK(}3zy0)`zhIaY+P+sxbk)g%<)}^)V5%L}fC)6zC@7Z6#q$m2zy=mE{ zrJQ$Feb+`hMp|<%*FJ7=yWsto-*xIv-=vJ4tpui;G3|V}Is$0gE#LIlmpYlBY70qh z`6cqf(>^`;vFX<}5)rc%=fC)&&9rz;$gZZP7quqxujB3yf_N67!84e4uNl`OkyxMumBmrULIp!Vs0uokj)BYd!**%*$<$~6=AWF<7m5ZfyxuFVe$ND*j&{)YuDICMvekrV;|yah^2 literal 0 HcmV?d00001 diff --git a/auto_tests/save_compatibility_test.c b/auto_tests/save_compatibility_test.c index aa440e00a0..75dd4f2104 100644 --- a/auto_tests/save_compatibility_test.c +++ b/auto_tests/save_compatibility_test.c @@ -9,7 +9,8 @@ #include #include -#define LOADED_SAVE_FILE "../auto_tests/data/save.tox" +#define LOADED_SAVE_FILE_BIG "../auto_tests/data/save.tox.big" +#define LOADED_SAVE_FILE_LITTLE "../auto_tests/data/save.tox.little" // Information from the save file #define EXPECTED_NAME "name" @@ -18,7 +19,7 @@ #define EXPECTED_STATUS_MESSAGE_SIZE strlen(EXPECTED_STATUS_MESSAGE) #define EXPECTED_NUM_FRIENDS 1 #define EXPECTED_NOSPAM "4C762C7D" -#define EXPECTED_TOX_ID "B70E97D41F69B7F4C42A5BC7BD7A76B95B8030BE1B7C0E9E6FC19FC4ABEB195B4C762C7D800B" +#define EXPECTED_TOX_ID "E776E9A993EE3CAE04F5946D9AC66FBBAA8C63A95A94B41942353C6DC1739B4B4C762C7DA7B9" static size_t get_file_size(const char *save_path) { @@ -135,6 +136,12 @@ static void test_save_compatibility(const char *save_path) tox_kill(tox); } +static bool is_little_endian(void) +{ + uint16_t x = 1; + return ((uint8_t *)&x)[0] == 1; +} + // cppcheck-suppress constParameter int main(int argc, char *argv[]) { @@ -153,10 +160,15 @@ int main(int argc, char *argv[]) base_path[strrchr(base_path, '/') - base_path] = '\0'; } - char save_path[4096 + sizeof(LOADED_SAVE_FILE)]; - snprintf(save_path, sizeof(save_path), "%s/%s", base_path, LOADED_SAVE_FILE); - - test_save_compatibility(save_path); + if (is_little_endian()) { + char save_path[4096 + sizeof(LOADED_SAVE_FILE_LITTLE)]; + snprintf(save_path, sizeof(save_path), "%s/%s", base_path, LOADED_SAVE_FILE_LITTLE); + test_save_compatibility(save_path); + } else { + char save_path[4096 + sizeof(LOADED_SAVE_FILE_BIG)]; + snprintf(save_path, sizeof(save_path), "%s/%s", base_path, LOADED_SAVE_FILE_BIG); + test_save_compatibility(save_path); + } return 0; }