pike issueshttps://git.lysator.liu.se/pikelang/pike/-/issues2024-01-26T13:03:11Zhttps://git.lysator.liu.se/pikelang/pike/-/issues/10139RSA PKCS1 v1.5 decryption implementation does not detect ciphertext modificat...2024-01-26T13:03:11ZJoshua RogersRSA PKCS1 v1.5 decryption implementation does not detect ciphertext modification by prepending \0-bytes to ciphertextsHi there,
Another issue in RSA PKCS1 v1.5. Pike does not bork on ciphertexts that have been modified with prepended 0-bytes in their ciphertext.
A small test-case:
```
int main() {
string key = "30820943020100300d06092a864886f70d010...Hi there,
Another issue in RSA PKCS1 v1.5. Pike does not bork on ciphertexts that have been modified with prepended 0-bytes in their ciphertext.
A small test-case:
```
int main() {
string key = "30820943020100300d06092a864886f70d01010105000482092d308209290201000282020100f601be0dccd04aa40b12f3f191ae17c1f9c8c0b68e7a77e14be25c3c7907cb1d33a6ef418ef41852f32c98392bc5c9aed91c1a1501c503eab89b3ee6f4f8eb2e0fcfc41bd03609cf6a8eb3aa6f0fbe23187b33db4d34b66d128a8aba0a2abf40bb9d13d8e2554569a57ab1d8c61b8cad2dc88599ae0da5346e15dace1bac7bf69737c22f083be9b46bb8b1eab5957b2da740275e96c87195b96fe11452159dafcfd916cee5d749a77bc3905a5ebd387ae445e8fe70f16e9a086639779ceffbfd41557bd99aea6a371a6b4b160615a1a12bc6958d34bce0c85adcbd8392fa10ceca52209d56196ba3d273ce228f1f111192aa92de2a039798a17bcecb4dc6100e6f8ae8c2643f2ae768b2255f082c978e95ca551555f10608231cf8003bbf807969fff1e51914b9a8c9b8f4564645b9e5d705ffad29663f5dae3d76652b422e43f13e6c1491090805c2d1268a74a251177427e33a9a91175c3670b91746008bce1fd231e6e4f2ad70cb43aca5f07600a6d31dd02915243dfdd943a02165da367a6b7e4dae1dd2e8b836903080795d2585076cc1c15dd9e8d2e5e047526569b1bfd395d957eb9fde325d342d14426e71efdc1887515e53cdea5834921f928629e748eed097ac4024e2bf255d70411f87373948cf8e8aa7effa2b0ab47d5166091e1aedec60568b155bd9c27bc55f3ece35f83d636dbcd5abf4853a051db94d5045020301000102820200065028224431ca35e87f82d97302c9384b4d341385ecd8510f4df94e51facf0dbfa01694139e3f00e34859db09bd087e74b2e1c1229652e73df7e49c2fb2dd9cda7f5b49d81a32e9403e4b97b6eeebfdb6e89e7d8fbf27b95282fca9668e649c68297bf367bcdc21a86dfc22132a177e4591024b5dd49ad091775271fc9d7cb6e8cd8a5858f93f4cf280bf0c1b69d675e6f760ab443fa8ee8ddf89a2a85d46a52c367c27db6d1ec6435e52eb86c7e0ab02b05543865423cc4f25346f55e1db6675e69832e43a04ccc78af3abd68477ed37698ab7f61facbdbcdb32552de5e89d8342aa9f445b8afac81bfc5bc05981ea20b340e948f710f7b3ee85f18b5c3c5832f2336706c5e9c9bd8e43d202e73a0f62776df4b715975eddd31aa643b14145057b4995556de614c57b33297bda0e05a8b8882a29563bf21686ce34c3960f905de73911987eb696e07eac0a63857e2894c3b4629477ecbf1fc76eafbb2ce4a0f00f8cdb6fbd6169e399151460522cf5b365d9bbb9587d07dac8c438982adea9ff243a86bbdf128eaa0d3a88871d8cdf081854258a651ff4226ee9749b4a6add090c159ccea06b9a10804e5fe15120cc63a5972eab0e43980dedaff321fadeea3ca60c3ba1c2980bb597ea783b80ab6eba87feb5754fd1d65d7cad6f81cf52c1a6bfebf9a75e9a316cb364d8cf467d96370871df2ee66ee1c1694a02239583910282010100fc21b855c5ad4ca2b6970516406f71c6e79efc4126e6598772db1e082de6b0dddaaa2a2951f04148e86e0bde28213b7f600f987308301eacea134062bb0c3ddf628da9abf93ef1ce3e75b0953a484dbd3554bd5c0649933dd77e527563e90f05a8013fddac958c329378e94303b304be5f9df1fe5b043a7fdd94700a3f0b1cbbd0516b7cd94c57ca96d9fd2a8ca973991218cba33a1c23d810f7519d1f7702ab72affdb3f84a1b2a88116e4033bc4d0cfc7989c657e0fe94e964476ae58bae6b7876f36c09d32b1a63f8c47c94a74c92eedf75fc27cffe0f8452363e4bc8f7653f3cb55eaf693cec70d13c875de935a8b20439ab7e93f76981c5957fc5bb44d90282010100f9c7f748a505d23ecef9a85f8097c8cf7d7028ef6c90e22a336511582d2cc3636e34ead37204dbd22f142a3fb1d5f857b0310c7a433f51ae14d4608b01b43aa8c7ae67835f7fbe0b9d97948b39e9ba2d3a1687edb8b56ee70ff0536dab4d0551f71ed0daee9e412449f5f099bcc15e4ef0554dc79f87fec5a0dea717c7054392bf444613937401bbef3c22fbf7e738c58779b981609a1f9c11dd6f0bbe9996e2773459e4cef247b02a9fc21296ac57a5b10561824310cfbdecc90e06598370e3698713fdbe2528ec4ef3dccaae701eedc3e54ad6e7af4e68e3b39bd2e97ac9119936c647a503511cb283df984cfd7c07f0f56aa8ae3166948ef3f41b0859934d0282010100815486aab0a0896bf97f13e3eb1f7f5c49195b49cc3b6277412a3688798b18f46422df479cb941b3b54e25964a3d69b897bcc8355160e58b4af29f1745dd2cabb670f634b9c058e6b3514947f2c27de5ed424f73b1e1f1be4a188911a0333f3a6688658b3ee8e3265a512e4deacadc470ee304ebb5224123afb461984fe8524fe0b6b30d32a59f6ed2dc74a96bc7cbfd1bb44e58a7092235c5d6272e12a2c862cb8c8cf5d109aa4fb1c6472875a14460c1ed5207c4b22bc494c7947eb7ca63a8cafd31361d000ddf16a2d79f13dd9140d979149b488cbf44945a5b6aaf13221bf4491ebbb7fca27ca20e221f49c3c37b89fcf2dc0e2cb63f8f8a9b7a142250590282010100b61d84ff934a4e437b16ee1b4b9fdf4ae13370b5385bde7a5464a123c0343df575f9e128ef9df944230d39cc9cf5dc0edb28b7e740b69ef024c1bfee39fcd5340ffaea0010160c535dc0920e7cd81be533d00fa554a1fc4d3e02c461569f5e7ca787f1515edf45b196b759884de652c38d5934cf92524e807b4d3b590bc39bc417ee4885a761d28ddadce6c8fdb3b961d3e7fd48064df9340a967f8b79997438841f48579a476ddb55088c308f68f2b29d01c6597a5a7c8d066284f63e37a68c3879c32aa3836675fd0eb2719883a91944561e9dd7e8aa6bb17157f08c48f8e6fae5c3e5a2bb6b5d580eec6c97ddcd9be0a49ef283a7031ad7aba8d438df4e950282010022fb8e5fcd9b767104e71244db53058c18061e1b0d1f63b73e2d59a95e2a10cd87426a33da13c287cdef8136e5e47e93fb9b30ad92628a7b543f48eb011a86356ab3cb480f27e391b018ca187d97af3d82e31861ecafa663db78aa89c3bd468e6aadefb3a43f78bc00b8014c95db54e9d21a017e8f21f671545edde9a965ea32dfff45cda37fca1aa5132f6c8eed222bd01fed5a6e7d639580c5955777a86544c2c4c939bdb8b4c486dda53072861a0334359bdb3758475e49d90d0539944e78cfcfd8fff55bb31a1cebc65b28f51e790701b2f7912188984f034e6e96e1c5251e33fe38fb221bce7a90a86857c5f56b6ca77307c45d5290b1f088ade082b349";
string privateKeyPkcs8 = String.hex2string(key);
mixed state = Standards.PKCS.parse_private_key(privateKeyPkcs8);
string ret;
string ct = String.hex2string("e4b9d12b1519d15af3a10fef8ed37f918e998c56b7d89fad34cecd08ecb9ae9b3213f1e9686be7ea525882a5f28a594963b4c16ed9207210646d0d5cac26920f92edd61b262a39f0f9a9f889da6f583c6fce47a08b0fd575b4bbd33e64da0eb390703e341ae3c4392b39360a1a623b8701ad51801e63df43237df4e816f2a1e4312099f1070c528fc10803879321e99e76104b2440cb4ca788c2eeda15a673e418ff247f8556a2c5be47bc016fc6a2a6caf4080d6004f4d8d17dae33e23c8bb4046fd91ea85560f9d68949da790ea662e32c3c44538d4a8bd555338ddbf4009a9d8b2cb42337ab138b6841c0f1d34f585ecb9c8be41a037fd79c3db489909da1328a170a4d676d62359166ba641d4ab0e6d56f26903e41dd4307742d6e76c67b88ac2f835a9d5b45de31a5e4b479e76b82b08c184a67f2b917c2f76ba8ebfe98b0071eee383de77cb5b06050eb058a5194eb8170b000b47862bf40c1baacb0e4c58210284556aee1ba1006f25618bece2e9578fb73fd389914db94343b41c407c7778e49b3aa3062c92c63e83d79aac7c7f3d1334f197b8660432f29504c6f1477f9d00a3cf56b6bba97ffbcbb5c68cd60972982bdc910419ec69bcc1cde7cdb1516706e7a51fb23da821754fc2385ccbc85ced7c7a32b9a0fd7fa71b9829a86247d1a0942546b25109079a7be7b2bff81803cd96102cdeead406b2446077b6e00");
array err = catch { ret = state->decrypt(ct); };
if(ret)
write("%s\n", ret);
}
```
This issue is similar to CVE 2020-14967, which also allowed for the prepending of \0-bytes to the ciphertext (which resulted in a buffer overflow due to difference in the expected and real length of the ct).
Cheers,
JoshPike 8.0https://git.lysator.liu.se/pikelang/pike/-/issues/10138gethrvtime() overflow on netbsd2023-11-28T13:44:10ZHenrik (Grubba) Grubbströmgethrvtime() overflow on netbsdFrom the Pike developers mailinglist/LysLysKOM 26092611:
```
26092611 2023-11-24 04:29 /35 rader/ <william@welliver.org>
Sänt av: SRS0=LsSK=HF=lists.lysator.liu.se=pike-devel-bounces@lysator.liu.se
Importerad: 2023-11-24 04:29 av Brevbär...From the Pike developers mailinglist/LysLysKOM 26092611:
```
26092611 2023-11-24 04:29 /35 rader/ <william@welliver.org>
Sänt av: SRS0=LsSK=HF=lists.lysator.liu.se=pike-devel-bounces@lysator.liu.se
Importerad: 2023-11-24 04:29 av Brevbäraren
Extern mottagare: pike-devel@lists.lysator.liu.se
Mottagare: Pike (-) developers forum <21444>
Ärende: gethrvtime() overflow on netbsd
------------------------------------------------------------
```
Hello all,
I've been working on a new stable release and in the course of the usual
checks, I noticed that pike farm builds are failing on netbsd (9.3). A
little investigation shows that the benchmark is effectively timing out.
I think this failure is caused by the code that limits a test to a given
amount of time.
Basically, the elapsed time is calculated as final_time - start_time as
returned by `gethrvtime()`, and it appears that on netbsd, there's (I'm
assuming) an overflow that causes the elapsed time to become negative.
It happens often enough that the total amount of time spent on a given
set of test runs becomes increasingly negative, essentially running any
test forever.
I"m sure that there's a better solution but I'd like to suggest that in
the interim, a simple check be added to ignore any negative times:
In `Tools.Shoot.run_sub()`:
From:
```
tg += (hrt - start_cpu) / 1000000.0;
```
To:
```
int te = hrt - start_cpu;
if(te < 0 ) te = 0;
tg += te / 1000000.0;
```
Does anyone have any objection to me making this change in 9.0 and 8.0?
Bill
```
(26092611) /<william@welliver.org>/-----------------
```Pike 8.0https://git.lysator.liu.se/pikelang/pike/-/issues/10130Internal compiler error triggered by syntax error in implicit create argument...2023-11-01T08:21:13ZHenrik (Grubba) GrubbströmInternal compiler error triggered by syntax error in implicit create argument listObserved in the wild:
```
$ cat Bang.pmod
class Bang(pang) {
void bang() {}
}
$ pike -M.
Pike v8.0 release 1738 running Hilfe v3.5 (Incremental Pike Frontend)
> Bang;
Bang.pmod:1:syntax error, unexpected ')', expecting TOK_IDENTIFIER
...Observed in the wild:
```
$ cat Bang.pmod
class Bang(pang) {
void bang() {}
}
$ pike -M.
Pike v8.0 release 1738 running Hilfe v3.5 (Incremental Pike Frontend)
> Bang;
Bang.pmod:1:syntax error, unexpected ')', expecting TOK_IDENTIFIER
Bang.pmod:2:Missing ';'.
Bang.pmod:3:Missing ';'.
/var/tmp/portage/dev-lang/pike-8.0.1738-r3/work/Pike-v8.0.1738/src/block_allocator.c:311: Fatal error:
ptr 0x55a2c30fd730 not in any page.
Backtrace at time of fatal:
-:1:
PikeCompiler("", Tools.Hilfe.StdinHilfe()->HilfeCompileHandler(), -1, -1, UNDEFINED, UNDEFINED)->compile()
-:1:
DefaultCompilerEnvironment->compile(PikeCompiler("", Tools.Hilfe.StdinHilfe()->HilfeCompileHandler(), -1, -1, UNDEFINED, UNDEFINED))
/usr/lib64/pike/master.pike:743:
compile_string("mapping(string:mixed) ___hilfe = ___Hilfe->variables;\n# 1\nmixed ___HilfeWrapper() { return Bang; ; }\n","HilfeInput",Tools.Hilfe.StdinHilfe()->HilfeCompileHandler(),UNDEFINED,UNDEFINED,UNDEFINED)
/usr/lib64/pike/modules/Tools.pmod/Hilfe.pmod:2311:
Tools.Hilfe.StdinHilfe()->hilfe_compile("mixed ___HilfeWrapper() { return Bang; ; }",UNDEFINED)
/usr/lib64/pike/modules/Tools.pmod/Hilfe.pmod:2352:
Tools.Hilfe.StdinHilfe()->evaluate("mixed ___HilfeWrapper() { return Bang; ; }",1)
/usr/lib64/pike/modules/Tools.pmod/Hilfe.pmod:2097:
Tools.Hilfe.StdinHilfe()->parse_expression(Tools.Hilfe.Expression(({ /* 2 elements */
"Bang",
";"
})))
/usr/lib64/pike/modules/Tools.pmod/Hilfe.pmod:1651:
Tools.Hilfe.StdinHilfe()->add_buffer("Bang;")
/usr/lib64/pike/modules/Tools.pmod/Hilfe.pmod:1598:
Tools.Hilfe.StdinHilfe()->add_input_line("Bang;")
/usr/lib64/pike/modules/Tools.pmod/Hilfe.pmod:2562:
Tools.Hilfe.StdinHilfe()->create(UNDEFINED)
/usr/lib64/pike/modules/Tools.pmod/Hilfe.pmod:2481: Tools.Hilfe.StdinHilfe()
Aborted
```
The crash seems to be due to the nested program not being popped correctly.Pike 8.0https://git.lysator.liu.se/pikelang/pike/-/issues/10129System.TM timezone confusion2023-11-04T09:09:09ZHenrik (Grubba) GrubbströmSystem.TM timezone confusionFrom LysLysKOM 26017901:
```
26017901 2023-10-12 17:13 /39 rader/ ceder (-) Per Cederqvist
Mottagare: Pike (-) developers forum <21425>
Ärende: System.TM timezone confusion
------------------------------------------------------------
``...From LysLysKOM 26017901:
```
26017901 2023-10-12 17:13 /39 rader/ ceder (-) Per Cederqvist
Mottagare: Pike (-) developers forum <21425>
Ärende: System.TM timezone confusion
------------------------------------------------------------
```
System.TM does not work as advertised. The documentation says that
the timezone will be UTC when you supply a number to the constructor,
but that does not appear to be the case. Note how the timezone is
CEST no matter how I initialize the TM object, but the reported hours
differ:
```
$ pike
Pike v9.0 release 1 running Hilfe v3.5 (Incremental Pike Frontend)
> mixed t = System.TM(1697121800);
> t;
(1) Result: System.TM(Thu Oct 12 15:43:20 2023 CEST)
> t->gmtime(1697121800);
(2) Result: 1
> t;
(3) Result: System.TM(Thu Oct 12 15:43:20 2023 CEST)
> t->localtime(1697121800);
(4) Result: 1
> t;
(5) Result: System.TM(Thu Oct 12 16:43:20 2023 CEST)
```
The result (5) makes sense: it matches what I would expect. But
the hour should be set to 14, not 15:
```
> mixed c = Calendar.ISO.Second(1697121800);
> c->set_timezone("UTC");
> c;
(5) Result: Second(Thu 12 Oct 2023 16:43:20 CEST)
> mixed u = c->set_timezone("UTC");
> u;
(6) Result: Second(Thu 12 Oct 2023 14:43:20 UTC)
```
This also agrees with my private utility for converting a time_t value
to the local timezone and UTC (this one is written in Python):
```
$ time_t2date 1697121800
2023-10-12 16:43:20 CEST
2023-10-12 14:43:20 GMT
```
Tested on the current master, and a few older Pike versions.
```
(26017901) /ceder (-) Per Cederqvist/---------------
```Pike 8.0https://git.lysator.liu.se/pikelang/pike/-/issues/10127Fix QA complaints from Gentoo Ebuild of Pike 8.0.17382023-06-29T10:13:14ZHenrik (Grubba) GrubbströmFix QA complaints from Gentoo Ebuild of Pike 8.0.1738```
* QA Notice: Binary files linked to libcrypt.so found
* But a dependency on virtual/libcrypt is not declared!
*
* /var/tmp/portage/dev-lang/pike-8.0.1738-r1/image/usr/bin/pike
*
* Please add virtual/libcrypt:= dependency
*...```
* QA Notice: Binary files linked to libcrypt.so found
* But a dependency on virtual/libcrypt is not declared!
*
* /var/tmp/portage/dev-lang/pike-8.0.1738-r1/image/usr/bin/pike
*
* Please add virtual/libcrypt:= dependency
* Gentoo bug: https://bugs.gentoo.org/699422
* Tracker bug: https://bugs.gentoo.org/798963
* See: https://wiki.gentoo.org/wiki/Project:Toolchain/libcrypt_implementation
* QA Notice: Found the following implicit function declarations in configure logs:
* /var/tmp/portage/dev-lang/pike-8.0.1738-r1/work/Pike-v8.0.1738/build/linux-5.16.2-gentoo-x86_64/config.log:739 - _bswap
* /var/tmp/portage/dev-lang/pike-8.0.1738-r1/work/Pike-v8.0.1738/build/linux-5.16.2-gentoo-x86_64/config.log:817 - _bswap64
* /var/tmp/portage/dev-lang/pike-8.0.1738-r1/work/Pike-v8.0.1738/build/linux-5.16.2-gentoo-x86_64/config.log:895 - _bit_scan_reverse
* /var/tmp/portage/dev-lang/pike-8.0.1738-r1/work/Pike-v8.0.1738/build/linux-5.16.2-gentoo-x86_64/config.log:973 - _bit_scan_forward
* /var/tmp/portage/dev-lang/pike-8.0.1738-r1/work/Pike-v8.0.1738/build/linux-5.16.2-gentoo-x86_64/config.log:1359 - _byteswap_ulong
* /var/tmp/portage/dev-lang/pike-8.0.1738-r1/work/Pike-v8.0.1738/build/linux-5.16.2-gentoo-x86_64/config.log:1439 - _byteswap_uint64
* /var/tmp/portage/dev-lang/pike-8.0.1738-r1/work/Pike-v8.0.1738/build/linux-5.16.2-gentoo-x86_64/config.log:1519 - __cntlz4
* /var/tmp/portage/dev-lang/pike-8.0.1738-r1/work/Pike-v8.0.1738/build/linux-5.16.2-gentoo-x86_64/config.log:1597 - __cntlz8
* /var/tmp/portage/dev-lang/pike-8.0.1738-r1/work/Pike-v8.0.1738/build/linux-5.16.2-gentoo-x86_64/config.log:1675 - __cnttz4
* /var/tmp/portage/dev-lang/pike-8.0.1738-r1/work/Pike-v8.0.1738/build/linux-5.16.2-gentoo-x86_64/config.log:1753 - __cnttz8
* /var/tmp/portage/dev-lang/pike-8.0.1738-r1/work/Pike-v8.0.1738/build/linux-5.16.2-gentoo-x86_64/config.log:2046 - yylex
* /var/tmp/portage/dev-lang/pike-8.0.1738-r1/work/Pike-v8.0.1738/build/linux-5.16.2-gentoo-x86_64/config.log:2057 - yylex
* /var/tmp/portage/dev-lang/pike-8.0.1738-r1/work/Pike-v8.0.1738/build/linux-5.16.2-gentoo-x86_64/config.log:13522 - pthread_yield_np
* /var/tmp/portage/dev-lang/pike-8.0.1738-r1/work/Pike-v8.0.1738/build/linux-5.16.2-gentoo-x86_64/config.log:14227 - getpid
* /var/tmp/portage/dev-lang/pike-8.0.1738-r1/work/Pike-v8.0.1738/build/linux-5.16.2-gentoo-x86_64/config.log:23768 - infnan
* /var/tmp/portage/dev-lang/pike-8.0.1738-r1/work/Pike-v8.0.1738/build/linux-5.16.2-gentoo-x86_64/config.log:24033 - _isnan
* /var/tmp/portage/dev-lang/pike-8.0.1738-r1/work/Pike-v8.0.1738/build/linux-5.16.2-gentoo-x86_64/config.log:26347 - fpsetmask
* /var/tmp/portage/dev-lang/pike-8.0.1738-r1/work/Pike-v8.0.1738/build/linux-5.16.2-gentoo-x86_64/config.log:26635 - fpsetround
* /var/tmp/portage/dev-lang/pike-8.0.1738-r1/work/Pike-v8.0.1738/build/linux-5.16.2-gentoo-x86_64/config.log:26954 - GetSystemTimeAsFileTime
* /var/tmp/portage/dev-lang/pike-8.0.1738-r1/work/Pike-v8.0.1738/build/linux-5.16.2-gentoo-x86_64/modules/Fuse/config.log:203 - exit
* /var/tmp/portage/dev-lang/pike-8.0.1738-r1/work/Pike-v8.0.1738/build/linux-5.16.2-gentoo-x86_64/modules/HTTPLoop/config.log:723 - sendfile
* /var/tmp/portage/dev-lang/pike-8.0.1738-r1/work/Pike-v8.0.1738/build/linux-5.16.2-gentoo-x86_64/modules/HTTPLoop/config.log:729 - sendfile
* /var/tmp/portage/dev-lang/pike-8.0.1738-r1/work/Pike-v8.0.1738/build/linux-5.16.2-gentoo-x86_64/modules/Mysql/config.log:883 - mysql_connect
* /var/tmp/portage/dev-lang/pike-8.0.1738-r1/work/Pike-v8.0.1738/build/linux-5.16.2-gentoo-x86_64/modules/Mysql/config.log:1016 - mysql_connect
* /var/tmp/portage/dev-lang/pike-8.0.1738-r1/work/Pike-v8.0.1738/build/linux-5.16.2-gentoo-x86_64/modules/Wnotify/config.log:466 - FindFirstChangeNotification
* /var/tmp/portage/dev-lang/pike-8.0.1738-r1/work/Pike-v8.0.1738/build/linux-5.16.2-gentoo-x86_64/modules/_Stdio/config.log:2071 - sendfile
* /var/tmp/portage/dev-lang/pike-8.0.1738-r1/work/Pike-v8.0.1738/build/linux-5.16.2-gentoo-x86_64/modules/_Stdio/config.log:2077 - sendfile
* /var/tmp/portage/dev-lang/pike-8.0.1738-r1/work/Pike-v8.0.1738/build/linux-5.16.2-gentoo-x86_64/modules/_math/config.log:747 - fpsetround
* /var/tmp/portage/dev-lang/pike-8.0.1738-r1/work/Pike-v8.0.1738/build/linux-5.16.2-gentoo-x86_64/modules/system/config.log:3221 - setprgp
* Check that no features were accidentally disabled.
* See https://wiki.gentoo.org/wiki/Modern_C_porting.
```Pike 8.0https://git.lysator.liu.se/pikelang/pike/-/issues/10123Overloading of getter/setters with plain variables seems broken2023-05-16T16:06:23ZHenrik (Grubba) GrubbströmOverloading of getter/setters with plain variables seems brokenFrom `jonasw` @ Roxen Slack:
```
class Op
{
object `data() {}
string _sprintf() {
return sprintf("%s(%O)",
function_name(object_program(this)),
data || "-");
}
}
class Op1(object mupp)
{
...From `jonasw` @ Roxen Slack:
```
class Op
{
object `data() {}
string _sprintf() {
return sprintf("%s(%O)",
function_name(object_program(this)),
data || "-");
}
}
class Op1(object mupp)
{
inherit Op;
object `data() { return mupp; }
}
class Op2(object data)
{
inherit Op;
// object `data() { return this::data; }
}
class Data()
{
string _sprintf() { return "DATA"; }
}
void main()
{
object data = Data();
werror("op1: %O, op2: %O\n", Op1(data), Op2(data));
}
```
When the above is run (Pike 8.0.1832 or 9.0.1), the following is output:
```
op1: Op1(DATA), op2: Op2("-")
```
The comment in `Op2` triggers a compilation error due to the name clash between the variable `data` and the getter of the same name.
It looks like the reference to `data` in `Op()->_sprintf()` has a `local`/`inline` scope even though `data` has not been declared as such.Pike 8.0https://git.lysator.liu.se/pikelang/pike/-/issues/10121Filesystem.System()->find() is broken.2023-08-22T10:59:14ZHenrik (Grubba) GrubbströmFilesystem.System()->find() is broken.The filtering of in `find()` attempts to call the value `1` (if there are any subdirectories). This seems to be code that was missed in 9ae59318485754881ba0798de5dfac12c1abede9:
```
array find(void|function(Filesystem.Stat, __unknown__.....The filtering of in `find()` attempts to call the value `1` (if there are any subdirectories). This seems to be code that was missed in 9ae59318485754881ba0798de5dfac12c1abede9:
```
array find(void|function(Filesystem.Stat, __unknown__...:int) mask,
mixed ... extra)
{
array(Filesystem.Stat) res = ({});
array(Filesystem.Stat) d = get_stats() || ({});
array(Filesystem.Stat) r = filter(d, "isdir");
```Pike 8.0https://git.lysator.liu.se/pikelang/pike/-/issues/10111Calendar module in Pike 8.0 is broken near 1900-01-01T00:00:00 in some timezo...2023-08-22T10:59:14ZHenrik (Grubba) GrubbströmCalendar module in Pike 8.0 is broken near 1900-01-01T00:00:00 in some timezones.```
$ TZ=UTC pike
Pike v8.0 release 1738 running Hilfe v3.5 (Incremental Pike Frontend)
> Calendar.dwim_time("19000101T000000");
(1) Result: Second(Mon 1 Jan 1900 0:00:00 UTC)
$ TZ=Europe/Stockholm pike
Pike v8.0 release 1738 running Hil...```
$ TZ=UTC pike
Pike v8.0 release 1738 running Hilfe v3.5 (Incremental Pike Frontend)
> Calendar.dwim_time("19000101T000000");
(1) Result: Second(Mon 1 Jan 1900 0:00:00 UTC)
$ TZ=Europe/Stockholm pike
Pike v8.0 release 1738 running Hilfe v3.5 (Incremental Pike Frontend)
> Calendar.dwim_time("19000101T000000");
Failed to dwim time from "19000101T000000"
/usr/lib64/pike/modules/Calendar.pmod/YMD.pike:3303:
ISO.dwim_time("19000101T000000",UNDEFINED)
> Calendar.dwim_time("19000101T000013");
Failed to dwim time from "19000101T000013"
/usr/lib64/pike/modules/Calendar.pmod/YMD.pike:3303:
ISO.dwim_time("19000101T000013",UNDEFINED)
> Calendar.dwim_time("19000101T000014");
(1) Result: Second(Mon 1 Jan 1900 0:00:00 CET)
> Calendar.dwim_time("18991231T23:59:59");
(2) Result: Second(Sun 31 Dec 1899 23:59:59 SET)
> Calendar.dwim_time("19000101T000015");
(3) Result: Second(Mon 1 Jan 1900 0:00:01 CET)
```
Note that when the parsing succeeds, the resulting seconds count is off by 14 seconds.
The above works fine in Pike 9.0 (aka master):
```
$ TZ=Europe/Stockholm ./pike
Pike v9.0 release 0 running Hilfe v3.5 (Incremental Pike Frontend)
> Calendar.dwim_time("19000101T000000");
(1) Result: Second(Mon 1 Jan 1900 0:00:00 CET)
```Pike 8.0https://git.lysator.liu.se/pikelang/pike/-/issues/10094Standards.IIM.get_information() returns ([]) for some files that have IPTC-II...2022-11-16T10:16:08ZHenrik (Grubba) GrubbströmStandards.IIM.get_information() returns ([]) for some files that have IPTC-IIM metadata.```
Pike v8.0 release 1783 running Hilfe v3.5 (Incremental Pike Frontend)
> Stdio.File fd = Stdio.File("iim.jpg", "rb");
> Standards.IIM.get_information(fd);
(1) Result: ([ ])
```
Enabling the `werrors` in `decode_photoshop_data()` gives...```
Pike v8.0 release 1783 running Hilfe v3.5 (Incremental Pike Frontend)
> Stdio.File fd = Stdio.File("iim.jpg", "rb");
> Standards.IIM.get_information(fd);
(1) Result: ([ ])
```
Enabling the `werrors` in `decode_photoshop_data()` gives:
```
> Standards.IIM.get_information(fd);
blocks: ({ /* 1 element */
"\4iptc\0\0\0\1\265\34\2\5\0.Britain Scotland Ukraine Nations League Soccer\34\2\n"
"\0\1""5\34\2\17\0\1S\34\2\24\0\bSOC WSOC\34\2""7\0\b20220921\34\2<\0\v152917+0000\34\2P\0\rScott Heppell\34\2U\0\3STR\34\2Z\0\aGlasgow\34\2e\0\3GBR\34\2n\0\2AP\34\2s\0\2AP\34\2t\0""8Copyright 2022 The Associated Press. All rights reserved\34\2x\0\307Ukrainian fans cheer prior to the star of the UEFA Nations League soccer match between Scotland and Ukraine, at Hampden Park, in Glasgow, Scotland, Wednesday, Sept. 21, 2022. (AP Photo/Scott Heppell)\34\2z\0\2HA\0"
})
block: "046970746300000001b51c0205002e4272697461696e2053636f746c616e6420556b7261696e65204e6174696f6e73204c656167756520536f636365721c020a0001351c020f0001531c02140008534f432057534f431c0237000832303232303932311c023c000b3135323931372b303030301c0250000d53636f74742048657070656c6c1c025500035354521c025a0007476c6173676f771c026500034742521c026e000241501c0273000241501c02740038436f70797269676874203230323220546865204173736f6369617465642050726573732e20416c6c207269676874732072657365727665641c027800c7556b7261696e69616e2066616e73206368656572207072696f7220746f207468652073746172206f66207468652055454641204e6174696f6e73204c656167756520736f63636572206d61746368206265747765656e2053636f746c616e6420616e6420556b7261696e652c2061742048616d7064656e205061726b2c20696e20476c6173676f772c2053636f746c616e642c205765646e65736461792c20536570742e2032312c20323032322e202841502050686f746f2f53636f74742048657070656c6c291c027a0002484100"
dsclen: 4
block_length: 1
actual length: 1
info: "\265"
Short info "\265"
(1) Result: ([ ])
```
The cause seems to be that there is an extra byte of NUL-padding after the Photoshop 6.0 header description text ("iptc"). https://www.adobe.com/devnet-apps/photoshop/fileformatashtml/ says that the pascal string should be padded to an even length (ie including the length byte).Pike 8.0https://git.lysator.liu.se/pikelang/pike/-/issues/10090Hilfe does not like anonymous classes with implicit create().2022-09-06T08:56:08ZHenrik (Grubba) GrubbströmHilfe does not like anonymous classes with implicit create().```
Pike v8.0 release 1738 running Hilfe v3.5 (Incremental Pike Frontend)
> class (string bar){}("foo")->bar;
Compiler Error: 2: syntax error, unexpected ';'
Compiler Error: 2: Missing ')'.
Compiler Error: 3: Missing ';'.
Compiler Error:...```
Pike v8.0 release 1738 running Hilfe v3.5 (Incremental Pike Frontend)
> class (string bar){}("foo")->bar;
Compiler Error: 2: syntax error, unexpected ';'
Compiler Error: 2: Missing ')'.
Compiler Error: 3: Missing ';'.
Compiler Error: 3: Unexpected end of file.
Compiler Error: 3: Missing '}'.
Compiler Error: 3: Opening '{' was here.
Compiler Error: 3: Unexpected end of file.
Compiler Error: 1: Got : string(102..111).
Compiler Error: 1: Index : string(97..114).
> dump wrapper
Last compiled wrapper:
001: mapping(string:mixed) ___hilfe = ___Hilfe->variables;
002: # 1
003: mixed ___HilfeWrapper() { return ("foo")->bar; ; }
004:
```
The same code wrapped in a lambda works fine:
```
> lambda() { return class (string bar){}("foo")->bar; }();
(1) Result: "foo"
```Pike 8.0https://git.lysator.liu.se/pikelang/pike/-/issues/10081Protocols.DNS.client should also consider /etc/hosts.2022-03-23T11:33:17ZHenrik (Grubba) GrubbströmProtocols.DNS.client should also consider /etc/hosts.Sometimes hosts are hidden behind proxies or need to be simulated. In those cases it is useful to be able to add corresponding entries to `/etc/hosts` (or equivalent). Currently it is complicated to access stuff that needs correct host h...Sometimes hosts are hidden behind proxies or need to be simulated. In those cases it is useful to be able to add corresponding entries to `/etc/hosts` (or equivalent). Currently it is complicated to access stuff that needs correct host headers but via an alternative IP-number.
Adjust `Protocols.DNS.client()->gethostbyname()` et al to also consider `/etc/hosts`.Pike 8.0https://git.lysator.liu.se/pikelang/pike/-/issues/10075Crypto.DSA infinite loop in pkcs_verify()2022-03-01T13:41:06ZJoshua RogersCrypto.DSA infinite loop in pkcs_verify()Hi there,
While doing some tests of Crypto.DSA, I've come across two (likely related) cases of a call to `Crypto.DSA.State()->pkcs_verify()` resulting in an infinite loop in Gmp.
I have two test-cases. One is where `sign` is empty:
```...Hi there,
While doing some tests of Crypto.DSA, I've come across two (likely related) cases of a call to `Crypto.DSA.State()->pkcs_verify()` resulting in an infinite loop in Gmp.
I have two test-cases. One is where `sign` is empty:
```
int main() {
mixed state1 = Crypto.DSA.State();
state1->set_public_key(Gmp.mpz("008f7935d9b9aae9bfabed887acf4951b6f32ec59e3baf3718e8eac4961f3efd3606e74351a9c4183339b809e7c2ae1c539ba7475b85d011adb8b47987754984695cac0e8f14b3360828a22ffa27110a3d62a993453409a0fe696c4658f84bdd20819c3709a01057b195adcd00233dba5484b6291f9d648ef883448677979cec04b434a6ac2e75e9985de23db0292fc1118c9ffa9d8181e7338db792b730d7b9e349592f68099872153915ea3d6b8b4653c633458f803b32a4c2e0f27290256e4e3f8a3b0838a1c450e4e18c1a29a37ddf5ea143de4b66ff04903ed5cf1623e158d487c608e97f211cd81dca23cb6e380765f822e342be484c05763939601cd667", 16), Gmp.mpz("00baf696a68578f7dfdee7fa67c977c785ef32b233bae580c0bcd5695d", 16), Gmp.mpz("16a65c58204850704e7502a39757040d34da3a3478c154d4e4a5c02d242ee04f96e61e4bd0904abdac8f37eeb1e09f3182d23c9043cb642f88004160edf9ca09b32076a79c32a627f2473e91879ba2c4e744bd2081544cb55b802c368d1fa83ed489e94e0fa0688e32428a5c78c478c68d0527b71c9a3abb0b0be12c44689639e7d3ce74db101a65aa2b87f64c6826db3ec72f4b5599834bb4edb02f7c90e9a496d3a55d535bebfc45d4f619f63f3dedbb873925c2f224e07731296da887ec1e4748f87efb5fdeb75484316b2232dee553ddaf02112b0d1f02da30973224fe27aeda8b9d4b2922d9ba8be39ed9e103a63c52810bc688b7e2ed4316e1ef17dbde", 16), Gmp.mpz("1e77f842b1ae0fcd9929d394161d41e14614ff7507a9a31f4a1f14d22e2a627a1f4e596624883f1a5b168e9425146f22d5f6ee28757414714bb994ba1129f015d6e04a717edf9b530a5d5cab94f14631e8b4cf79aeb358cc741845553841e8ac461630e804a62f43676ba6794af66899c377b869ea612a7b9fe6611aa96be52eb8b62c979117bbbcca8a7ec1e1ffab1c7dfcfc7048700d3ae3858136e897701d7c2921b5dfef1d1f897f50d96ca1b5c2edc58cada18919e35642f0807eebfa00c99a32f4d095c3188f78ed54711be0325c4b532aeccd6540a567c327225440ea15319bde06510479a1861799e25b57decc73c036d75a0702bd373ca231349931", 16));
state1->pkcs_verify(String.hex2string("313233343030"), Crypto.SHA224, "");
}
```
and the other is when it is non-empty:
```
int main() {
mixed state1 = Crypto.DSA.State();
state1->set_public_key(Gmp.mpz("008f7935d9b9aae9bfabed887acf4951b6f32ec59e3baf3718e8eac4961f3efd3606e74351a9c4183339b809e7c2ae1c539ba7475b85d011adb8b47987754984695cac0e8f14b3360828a22ffa27110a3d62a993453409a0fe696c4658f84bdd20819c3709a01057b195adcd00233dba5484b6291f9d648ef883448677979cec04b434a6ac2e75e9985de23db0292fc1118c9ffa9d8181e7338db792b730d7b9e349592f68099872153915ea3d6b8b4653c633458f803b32a4c2e0f27290256e4e3f8a3b0838a1c450e4e18c1a29a37ddf5ea143de4b66ff04903ed5cf1623e158d487c608e97f211cd81dca23cb6e380765f822e342be484c05763939601cd667", 16), Gmp.mpz("00baf696a68578f7dfdee7fa67c977c785ef32b233bae580c0bcd5695d", 16), Gmp.mpz("16a65c58204850704e7502a39757040d34da3a3478c154d4e4a5c02d242ee04f96e61e4bd0904abdac8f37eeb1e09f3182d23c9043cb642f88004160edf9ca09b32076a79c32a627f2473e91879ba2c4e744bd2081544cb55b802c368d1fa83ed489e94e0fa0688e32428a5c78c478c68d0527b71c9a3abb0b0be12c44689639e7d3ce74db101a65aa2b87f64c6826db3ec72f4b5599834bb4edb02f7c90e9a496d3a55d535bebfc45d4f619f63f3dedbb873925c2f224e07731296da887ec1e4748f87efb5fdeb75484316b2232dee553ddaf02112b0d1f02da30973224fe27aeda8b9d4b2922d9ba8be39ed9e103a63c52810bc688b7e2ed4316e1ef17dbde", 16), Gmp.mpz("1e77f842b1ae0fcd9929d394161d41e14614ff7507a9a31f4a1f14d22e2a627a1f4e596624883f1a5b168e9425146f22d5f6ee28757414714bb994ba1129f015d6e04a717edf9b530a5d5cab94f14631e8b4cf79aeb358cc741845553841e8ac461630e804a62f43676ba6794af66899c377b869ea612a7b9fe6611aa96be52eb8b62c979117bbbcca8a7ec1e1ffab1c7dfcfc7048700d3ae3858136e897701d7c2921b5dfef1d1f897f50d96ca1b5c2edc58cada18919e35642f0807eebfa00c99a32f4d095c3188f78ed54711be0325c4b532aeccd6540a567c327225440ea15319bde06510479a1861799e25b57decc73c036d75a0702bd373ca231349931", 16));
state1->pkcs_verify(String.hex2string("3130353336323835353638"), Crypto.SHA256, String.hex2string("a2184515521e4c5d26f05590543c696ca2bd04b7754a18107d7f62744fbcb3a52ee80de3dca53339c3f6b2196afe3c540adfeb92686029f2"));
}
```
Unfortunately, I'm not able to offer any suggestions as to why this happens, but please let me know if you have any questions.
Cheers,
JoshPike 8.0https://git.lysator.liu.se/pikelang/pike/-/issues/10074Crypto.AES.CCM produces incorrect results2021-12-09T09:35:17ZJoshua RogersCrypto.AES.CCM produces incorrect resultsHi there,
While performing some unit tests with Pike's Crypto.AES.CCM, I've run into an issue of the digest function producing "incorrect" results.
During my tests, I'm using two unit tests.
The first test is:
```
key: 1a44f3550688fddb...Hi there,
While performing some unit tests with Pike's Crypto.AES.CCM, I've run into an issue of the digest function producing "incorrect" results.
During my tests, I'm using two unit tests.
The first test is:
```
key: 1a44f3550688fddbc1e5041dc98952c0
iv: 5d2904298f668ba95eaa1797
aad: d55908958b70abee81054cdf3d3df5
msg:
expected digest: 5c71b4f069cfa13b7634db4b13e7be7d
```
And the second test is:
```
key: 439fd5c3b76587d5a601ba6ef8fad214
iv: ed1d316d0834d174c1b5b438
aad: eae252f42d2c71
msg:
expected digest: e8530426cbabf63633ff373159247e38
```
The **second** test results in the the digest value of "e8530426cbabf63633ff373159247e38". This is the same value as seen in openssl using the following C source code (`gcc test.c -lcrypto`):
```
#include <stdio.h>
#include <string.h>
#include <openssl/evp.h>
void str2hex(char *, char*, int);
void printBytes(unsigned char *, size_t );
int main() {
unsigned char *aad, *pt, *key, *nonce;
int Klen, Alen, Nlen, Plen, Tlen, Clen;
int outl = 0;
key = "439fd5c3b76587d5a601ba6ef8fad214";
aad = "eae252f42d2c71";
nonce = "ed1d316d0834d174c1b5b438";
pt = "";
Klen = strlen(key) / 2;
Alen = strlen(aad) / 2;
Nlen = strlen(nonce) / 2;
Plen = strlen(pt) / 2;
Tlen = 16;
Clen = Plen + Tlen;
unsigned char keyy[Klen], aadd[Alen], noncee[Nlen], ptt[Plen];
unsigned char ct[Clen], dt[Plen];
str2hex(key, keyy, Klen);
str2hex(pt, ptt, Plen);
str2hex(aad, aadd, Alen);
str2hex(nonce, noncee, Nlen);
EVP_CIPHER_CTX* ctx = EVP_CIPHER_CTX_new();
EVP_CIPHER_CTX_init(ctx);
EVP_EncryptInit(ctx, EVP_aes_128_ccm(), 0, 0);
EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_CCM_SET_IVLEN, Nlen, 0);
EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_CCM_SET_TAG, Tlen, 0);
EVP_EncryptInit(ctx, 0, keyy, noncee);
EVP_EncryptUpdate(ctx, 0, &outl, 0, Plen);
EVP_EncryptUpdate(ctx, 0, &outl, aadd, Alen);
EVP_EncryptUpdate(ctx, ct, &outl, ptt, Plen);
EVP_EncryptFinal(ctx, &ct[outl], &outl);
EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_CCM_GET_TAG, Tlen, ct + Plen);
printf("plaintext' = %s", pt);
printf("\n");
printf("\nciphertext : ");
printBytes(ct, Clen);
EVP_DecryptInit(ctx, EVP_aes_128_ccm(), 0, 0);
EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_CCM_SET_IVLEN, Nlen, 0);
EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_CCM_SET_TAG, Tlen, ct + Plen);
EVP_DecryptInit(ctx, 0, keyy, noncee);
EVP_DecryptUpdate(ctx, 0, &outl, 0, Plen);
EVP_DecryptUpdate(ctx, 0, &outl, aadd, Alen);
EVP_DecryptUpdate(ctx, dt, &outl, ct, Plen);
EVP_DecryptFinal(ctx, &dt[outl], &outl);
printf("plaintext : ");
printBytes(dt, Plen);
return 0;
}
void str2hex(char *str, char *hex, int len) {
int tt, ss;
unsigned char temp[4];
for (tt = 0, ss = 0; tt < len, ss < 2 * len; tt++, ss += 2) {
temp[0] = '0';
temp[1] = 'x';
temp[2] = str[ss];
temp[3] = str[ss + 1];
hex[tt] = (int) strtol(temp, NULL, 0);
}
}
void printBytes(unsigned char *buf, size_t len) {
int i;
for (i = 0; i < len; i++) {
printf("%02x", buf[i]);
}
printf("\n");
}
```
However, the **first** test does not succeed. Pike produces the digest "7a627cad3a11cb4192566a040d801fa8", while the C code (edited accordingly) produces the expected result, "5c71b4f069cfa13b7634db4b13e7be7d".
The following Pike code annotates my concerns:
```
int main() {
mixed state1 = Crypto.AES.CCM.State();
state1->set_encrypt_key(String.hex2string("1a44f3550688fddbc1e5041dc98952c0"));
state1->set_iv(String.hex2string("5d2904298f668ba95eaa1797"));
state1->update(String.hex2string("d55908958b70abee81054cdf3d3df5"));
string ct1 = state1->crypt(String.hex2string(""));
string dig1 = state1->digest();
if(String.string2hex(dig1) != "5c71b4f069cfa13b7634db4b13e7be7d")
write("First one did not match. Got %s, expected %s.\n", String.string2hex(dig1), "5c71b4f069cfa13b7634db4b13e7be7d");
mixed state2 = Crypto.AES.CCM.State();
state2->set_encrypt_key(String.hex2string("439fd5c3b76587d5a601ba6ef8fad214"));
state2->set_iv(String.hex2string("ed1d316d0834d174c1b5b438"));
state2->update(String.hex2string("eae252f42d2c71"));
string ct2 = state2->crypt(String.hex2string(""));
string dig2 = state2->digest();
if(String.string2hex(dig2) != "e8530426cbabf63633ff373159247e38")
write("Second one did not match. Got %s, expected %s.\n", String.string2hex(dig2), "e8530426cbabf63633ff373159247e38");
}
```
I have no explanation for the incorrect results, unfortunately.
Any support is welcome.
Thank you.Pike 8.0https://git.lysator.liu.se/pikelang/pike/-/issues/10072SIGSEGV in Crypto.AES.CCM2021-12-03T17:43:18ZHenrik (Grubba) GrubbströmSIGSEGV in Crypto.AES.CCMFrom LysLysKOM
```
25080935 igår 21:18 /27 rader/ Niels Möller (entering a radioactive zone)
Mottagare: Pike (-) developers forum <21270>
Mottagare: Niels Möller (entering a radioactive zone) <104958>
Mottaget: igår 21:18
Ärende: Bu...From LysLysKOM
```
25080935 igår 21:18 /27 rader/ Niels Möller (entering a radioactive zone)
Mottagare: Pike (-) developers forum <21270>
Mottagare: Niels Möller (entering a radioactive zone) <104958>
Mottaget: igår 21:18
Ärende: Bug in ccm glue?
```
------------------------------------------------------------
Hi, I've received a bug report (from someone at Opera) about a crash
when using Crypto.AES.CCM. Example
```
int main() {
mixed state1 = Crypto.AES.CCM.State();
state1->set_encrypt_key(String.hex2string("bedcfb5a011ebc84600fcb296c15af0d"));
state1->set_iv(String.hex2string("438a547a94ea88dce46c6c85"));
state1->update(String.hex2string(""));
string ct = state1->crypt(String.hex2string(""));
state1->digest();
return 0;
}
```
When I try it (with Pike v8.0, installed as a debian package on
x86_64) it segfaults in nettle_memxor3. As far as I can tell from 5
minutes of printf debugging, crash is inside the call to ->digest().
The set_iv method looks a bit suspicious to me, it doesn't include the
required arguments for the nettle function ccm_set_nonce (and ccm is
generally a bit messier to setup than most other modes). See
http://www.lysator.liu.se/~nisse/nettle/nettle.html#index-ccm_005fset_005fnonce
There may of course be some problem in the nettle library too, in
particular, I would be happier if api misuse resulted in an assert
failure rather than a segfault.
```
(25080935) /Niels Möller (entering a radioactive zone)/
```Pike 8.0Henrik (Grubba) GrubbströmHenrik (Grubba) Grubbströmhttps://git.lysator.liu.se/pikelang/pike/-/issues/10070pthread_cond_timedwait() does not normalize tv_nsec2021-11-26T17:10:22ZHenrik (Grubba) Grubbströmpthread_cond_timedwait() does not normalize tv_nsec`pthread_cond_timedwait()` on several OSes (including Linux and MacOS X) apparently does not normalize `tv_nsec`. A timeout with a `tv_sec` of `0` and a `tv_nsec` value above `1000000000` seems to give a zero timeout.
Make `co_wait_time...`pthread_cond_timedwait()` on several OSes (including Linux and MacOS X) apparently does not normalize `tv_nsec`. A timeout with a `tv_sec` of `0` and a `tv_nsec` value above `1000000000` seems to give a zero timeout.
Make `co_wait_timeout()` normalize `tv_nsec`.Pike 8.0Henrik (Grubba) GrubbströmHenrik (Grubba) Grubbströmhttps://git.lysator.liu.se/pikelang/pike/-/issues/10069Display the Thread.Mutex that a Thread.MutexKey belongs to also when disconne...2023-05-06T10:57:38ZHenrik (Grubba) GrubbströmDisplay the Thread.Mutex that a Thread.MutexKey belongs to also when disconnected.When a `Thread.Condition` is waiting, the `Thread.MutexKey` that it displays has typically been disconnected and no longer shows which `Thread.Mutex` it belongs to (Pike 8.0.1206):
```
-:1: _static_modules.Builtin()->condition()->wait(Mu...When a `Thread.Condition` is waiting, the `Thread.MutexKey` that it displays has typically been disconnected and no longer shows which `Thread.Mutex` it belongs to (Pike 8.0.1206):
```
-:1: _static_modules.Builtin()->condition()->wait(MutexKey())
```
Also fix the rendering of `Thread.Condition` to display `Thread.Condition` and its associated `Thread.Mutex` (if any).
See also #8189.Pike 8.0https://git.lysator.liu.se/pikelang/pike/-/issues/10065Build of Pike dist failed to push release tag2021-09-02T15:29:28ZHenrik (Grubba) GrubbströmBuild of Pike dist failed to push release tagObserved during an automated build:
```
$ /usr/local/bin/pike /home/dist/tmp/build/pike/bin/export.pike --srcdir="/home/dist/tmp/build/pike.srcbuild/../pike/src" --exportlist="/home/dist/tmp/build/pike.srcbuild/../pike/src/export_list" -...Observed during an automated build:
```
$ /usr/local/bin/pike /home/dist/tmp/build/pike/bin/export.pike --srcdir="/home/dist/tmp/build/pike.srcbuild/../pike/src" --exportlist="/home/dist/tmp/build/pike.srcbuild/../pike/src/export_list" --name=Pike-v%maj.%min.%bld --tag
Bumping release number.
Bumping release number.
Git command "git push origin refs/tags/v8.0.1660:refs/tags/v8.0.1660" failed.
ssh_exchange_identification: Connection closed by remote host
fatal: The remote end hung up unexpectedly
make[1]: *** [full_export] Error 128
```
This seems to have been due to an intermittent network issue.Pike 8.0Henrik (Grubba) GrubbströmHenrik (Grubba) Grubbströmhttps://git.lysator.liu.se/pikelang/pike/-/issues/10060Add support for STARTTLS (RFC 3207) and Implicit TLS (RFC 8314) to Protocols....2021-03-05T16:22:12ZHenrik (Grubba) GrubbströmAdd support for STARTTLS (RFC 3207) and Implicit TLS (RFC 8314) to Protocols.SMTP.ClientSome MSA's require submitted messages to be over TLS.
Implement support for RFC 3207 and RFC 8314 to solve this.Some MSA's require submitted messages to be over TLS.
Implement support for RFC 3207 and RFC 8314 to solve this.Pike 8.0https://git.lysator.liu.se/pikelang/pike/-/issues/10059Race condition in Filesystem.Monitor.basic.InotifyMonitor()->register_path()2021-02-03T15:49:32ZHenrik (Grubba) GrubbströmRace condition in Filesystem.Monitor.basic.InotifyMonitor()->register_path()Observed on Ubuntu 18.04:
```
inotify_add_watch failed: No such file or directory
pike/lib/modules/System.pmod/_Inotify.so:1: System._Inotify._Instance()->add_watch("/.../feeds/testdir0/test_move_col_depth_header_infinity/A/X/Y",53688315...Observed on Ubuntu 18.04:
```
inotify_add_watch failed: No such file or directory
pike/lib/modules/System.pmod/_Inotify.so:1: System._Inotify._Instance()->add_watch("/.../feeds/testdir0/test_move_col_depth_header_infinity/A/X/Y",536883150)
pike/lib/modules/Filesystem.pmod/Monitor.pmod/basic.pike:1102: FeedImportMonitor("/.../feeds/testdir0/test_move_col_depth_header_infinity/A/X/Y", 15, next: Thu Jan 1 01:00:00 1970, st: 0)->register_path(1)
packages/feedimport/modules/feed-import.pike (4e82006b):955: FeedImportMonitor("/.../feeds/testdir0/test_move_col_depth_header_infinity/A/X/Y", 15, next: Thu Jan 1 01:00:00 1970, st: 0)->register_path(1)
pike/lib/modules/Filesystem.pmod/Monitor.pmod/basic.pike:298: FeedImportMonitor("/.../feeds/testdir0/test_move_col_depth_header_infinity/A/X/Y", 15, next: Thu Jan 1 01:00:00 1970, st: 0)->create("/.../feeds/testdir0/test_move_col_depth_header_infinity/A/X/Y",15,UNDEFINED,UNDEFINED,UNDEFINED)
```Pike 8.0Henrik (Grubba) GrubbströmHenrik (Grubba) Grubbströmhttps://git.lysator.liu.se/pikelang/pike/-/issues/10058Xcode12 fails to ./configure due to -Wimplicit-function-declaration2021-12-10T14:57:04ZMitchell BlankXcode12 fails to ./configure due to -Wimplicit-function-declarationCompiling Pike-v8.0.702 on MacOS 11 with Xcode 12 one encounters an issue common to a lot of autoconf scripts -- broken tests due to the change to `-Werror,-Wimplicit-function-declaration`
Xcode 12 decided to make this warning an error ...Compiling Pike-v8.0.702 on MacOS 11 with Xcode 12 one encounters an issue common to a lot of autoconf scripts -- broken tests due to the change to `-Werror,-Wimplicit-function-declaration`
Xcode 12 decided to make this warning an error by default in C code. One place this tends to bite in a subtle way is inside of autoconf scripts, since there a failure will usually be silent unless it causes something to be misdetected. Indeed, when building pike the build ends up failing with:
```
Configuration error: No way to set nonblocking I/O
```
If you search for `Werror` in the config.log lines you see lots and lots of examples:
```
./build/darwin-20.1.0-x86_64/modules/_Image_JPEG/config.log:conftest.c:27:3: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/modules/_Image_TIFF/config.log:conftest.c:48:26: error: implicitly declaring library function 'malloc' with type 'void *(unsigned long)' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/modules/_Stdio/config.log:conftest.c:116:7: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/modules/_Stdio/config.log:conftest.c:134:3: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/modules/_Stdio/config.log:conftest.c:141:5: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/modules/_Stdio/config.log:conftest.c:135:3: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/modules/_Stdio/config.log:conftest.c:103:63: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/modules/_Stdio/config.log:conftest.c:136:5: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/modules/Mysql/config.log:conftest.c:39:3: error: implicit declaration of function 'mysql_real_connect' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/modules/Mysql/config.log:conftest.c:39:3: error: implicit declaration of function 'mysql_connect' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/modules/Mysql/config.log:conftest.c:39:3: error: implicit declaration of function 'mysql_real_connect' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/modules/Mysql/config.log:conftest.c:39:3: error: implicit declaration of function 'mysql_connect' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/modules/Mysql/config.log:conftest.c:39:3: error: implicit declaration of function 'mysql_real_connect' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/modules/Mysql/config.log:conftest.c:39:3: error: implicit declaration of function 'mysql_connect' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/modules/Mysql/config.log:conftest.c:39:3: error: implicit declaration of function 'mysql_real_connect' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/modules/Mysql/config.log:conftest.c:39:3: error: implicit declaration of function 'mysql_connect' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/modules/Mysql/config.log:conftest.c:39:3: error: implicit declaration of function 'mysql_real_connect' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/modules/Mysql/config.log:conftest.c:39:3: error: implicit declaration of function 'mysql_connect' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/modules/system/config.log:conftest.c:116:14: error: implicit declaration of function 'setprgp' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/modules/system/config.log:conftest.c:118:3: error: implicit declaration of function 'gethostbyname_r' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/modules/system/config.log:conftest.c:118:7: error: implicit declaration of function 'gethostbyname_r' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/modules/system/config.log:conftest.c:117:3: error: implicit declaration of function 'getservbyname_r' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/modules/system/config.log:conftest.c:118:7: error: implicit declaration of function 'getservbyname_r' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/modules/sybase/config.log:conftest.c:32:11: error: implicit declaration of function 'cs_ctx_alloc' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/modules/sybase/config.log:conftest.c:33:11: error: implicit declaration of function 'ct_init' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/modules/_math/config.log:conftest.c:28:5: error: implicit declaration of function 'fpsetround' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/modules/_Image_XFace/config.log:conftest.c:45:3: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/modules/Wnotify/config.log:conftest.c:33:3: error: implicit declaration of function 'FindFirstChangeNotification' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/modules/Wnotify/config.log:conftest.c:34:3: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:62:12: error: implicit declaration of function '_bswap' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:62:12: error: implicit declaration of function '_bswap64' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:62:12: error: implicit declaration of function '_bit_scan_reverse' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:62:12: error: implicit declaration of function '_bit_scan_forward' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:64:12: error: implicit declaration of function '_byteswap_ulong' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:64:12: error: implicit declaration of function '_byteswap_uint64' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:62:12: error: implicit declaration of function '__cntlz4' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:62:12: error: implicit declaration of function '__cntlz8' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:62:12: error: implicit declaration of function '__cnttz4' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:62:12: error: implicit declaration of function '__cnttz8' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:59:3: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:y.tab.c:1206:16: error: implicit declaration of function 'yylex' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.y:42:3: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:y.tab.c:1206:16: error: implicit declaration of function 'yylex' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.y:42:3: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:y.tab.c:1208:16: error: implicit declaration of function 'yylex' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:62:1: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:y.tab.c:1208:16: error: implicit declaration of function 'yylex' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:62:1: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:62:3: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:62:3: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:62:3: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:62:3: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:62:3: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:62:3: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:62:3: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:62:3: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:61:14: error: implicit declaration of function 'bar' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:174:3: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:168:30: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:239:3: error: implicit declaration of function 'mkdir' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:225:17: error: implicit declaration of function 'infnan' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:228:3: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:224:3: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:224:8: error: implicit declaration of function '_isnan' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:225:3: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:234:5: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:245:25: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:249:3: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:251:3: error: implicit declaration of function 'fpsetmask' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:252:3: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:255:3: error: implicit declaration of function 'fpsetround' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:256:3: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:253:3: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:253:3: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:245:3: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:259:24: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:250:3: error: implicit declaration of function 'GetSystemTimeAsFileTime' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:251:3: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:253:3: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:249:3: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:245:42: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:245:33: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:260:17: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:245:19: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:258:7: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:261:7: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:258:7: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:261:7: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:255:3: error: implicit declaration of function 'write' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:289:8: error: implicit declaration of function 'getpid' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:292:10: error: implicitly declaring library function 'strlen' with type 'unsigned long (const char *)' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:251:3: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:251:3: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:250:3: error: implicitly declaring library function 'printf' with type 'int (const char *, ...)' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:252:3: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:/Users/mitch/Pike-v8.0.702/src/fd_control.c:300:5: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:/Users/mitch/Pike-v8.0.702/src/fd_control.c:300:5: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:/Users/mitch/Pike-v8.0.702/src/fd_control.c:300:5: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:/Users/mitch/Pike-v8.0.702/src/fd_control.c:300:5: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:/Users/mitch/Pike-v8.0.702/src/fd_control.c:300:5: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:/Users/mitch/Pike-v8.0.702/src/fd_control.c:300:5: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:/Users/mitch/Pike-v8.0.702/src/fd_control.c:300:5: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:/Users/mitch/Pike-v8.0.702/src/fd_control.c:300:5: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:/Users/mitch/Pike-v8.0.702/src/fd_control.c:300:5: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:/Users/mitch/Pike-v8.0.702/src/fd_control.c:300:5: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:341:7: error: implicit declaration of function 'close' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:351:7: error: implicit declaration of function 'close' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:360:7: error: implicit declaration of function 'close' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:367:29: error: implicit declaration of function 'inet_addr' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:416:4: error: implicit declaration of function 'close' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:439:7: error: implicit declaration of function 'close' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:276:3: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:258:1: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:254:14: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
./build/darwin-20.1.0-x86_64/config.log:conftest.c:8:3: error: implicit declaration of function 'testfunc2' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
```
The number one cause of this type of failure is calling `exit()` without `#include <stdlib.h>` first. However, in my experience the fastest way to solve *that* particular one is to adjust the tests to just `return` from `main()` instead. E.g. here is one recent PR I made for a smaller project: https://github.com/jca02266/lha/pull/18/files
However in the case of pike there are a lot of other functions that are called without the proper header inclusion. For the time being I am going to work around it in Homebrew by adding `CFLAGS=-Wno-implicit-function-declaration` but long-term the configure.in files should be cleaned up to not generate these errors.Pike 8.0