Что: 21d8570fdb912aabef5c046097967a3ee3c9ad09
Когда: 2022-06-23 10:37:45+03:00
Темы: apple c hate
История однострочных исправлений https://flak.tedunangst.com/post/a-brief-history-of-one-line-fixes https://www.imperialviolet.org/2014/02/22/applebug.html Моё сердебиение участилось, глядя на всё это. И это одна из причин почему я программистам не бегу доверять в критичных вещах, особенно когда это что-то закрытое и ты беспомощная тварь. Программисты, к сожалению, являются людьми. Я точно так же когда-то сделал фатальнейшую ошибку в GoVPN и именно поэтому на сайте нельзя скачать версию 2.1. Вместо nonce+=2 я сделал nonce++. А если бы слепо следовал совету использовать два отдельных ключа для двух направлений, то ничего фатального бы не произошло. Захотел соптимизировать. И ещё тут есть пример почему я люто ненавижу когда люди используют фишку по автоматическому приведению int-ов к bool-ам (хотя конечно наоборот) и пишут "if (!whatever())", где whatever() не возвращает bool. В Go молодцы: логические условия возможны только и только с bool-ами. И ещё есть старая бага от Apple в самом низу списка, где демонстрируется очередная ненавистная мне штука в Си: возможность писать if (...) action; И, опять же, в Go можно написать только if (...) { action }. ------------------------ >8 ------------------------ --- hw/xfree86/common/xf86Init.c +++ hw/xfree86/common/xf86Init.c @@ -1677,7 +1677,7 @@ } if (!strcmp(argv[i], "-configure")) { - if (getuid() != 0 && geteuid == 0) { + if (getuid() != 0 && geteuid() == 0) { ErrorF("The '-configure' option can only be used by root.\n"); exit(1); } ------------------------ >8 ------------------------ --- openssl-a/md_rand.c +++ openssl-b/md_rand.c @@ -271,10 +271,7 @@ else MD_Update(&m,&(state[st_idx]),j); -/* - * Don't add uninitialised data. MD_Update(&m,buf,j); -*/ MD_Update(&m,(unsigned char *)&(md_c[0]),sizeof(md_c)); MD_Final(&m,local_md); md_c[1]++; ------------------------ >8 ------------------------ --- lib/libssl/src/ssl/s3_srvr.c +++ lib/libssl/src/ssl/s3_srvr.c @@ -2009,7 +2009,7 @@ static int ssl3_get_client_certificate(S else { i=ssl_verify_cert_chain(s,sk); - if (!i) + if (i <= 0) { al=ssl_verify_alarm_type(s->verify_result); SSLerr(SSL_F_SSL3_GET_CLIENT_CERTIFICATE,SSL_R_NO_CERTIFICATE_RETURNED); ------------------------ >8 ------------------------ --- libc-a/memset.c +++ libc-b/memset.c @@ -1,6 +1,6 @@ void *memset(void *_p, unsigned v, unsigned count) { unsigned char *p = _p; - while(count-- > 0) *p++ = 0; + while(count-- > 0) *p++ = v; return _p; } ------------------------ >8 ------------------------ --- tarsnap-autoconf-1.0.27/lib/crypto/crypto_file.c +++ tarsnap-autoconf-1.0.28/lib/crypto/crypto_file.c @@ -108,7 +108,7 @@ /* Encrypt the data. */ if ((stream = - crypto_aesctr_init(&encr_aes->key, encr_aes->nonce)) == NULL) + crypto_aesctr_init(&encr_aes->key, encr_aes->nonce++)) == NULL) goto err0; crypto_aesctr_stream(stream, buf, filebuf + CRYPTO_FILE_HLEN, len); crypto_aesctr_free(stream); ------------------------ >8 ------------------------ --- sql/password.c 2011-07-03 15:47:37 +0000 +++ sql/password.c 2012-04-06 09:04:07 +0000 @@ -531,7 +531,7 @@ mysql_sha1_reset(&sha1_context); mysql_sha1_input(&sha1_context, buf, SHA1_HASH_SIZE); mysql_sha1_result(&sha1_context, hash_stage2_reassured); - return memcmp(hash_stage2, hash_stage2_reassured, SHA1_HASH_SIZE); + return test(memcmp(hash_stage2, hash_stage2_reassured, SHA1_HASH_SIZE)); } ------------------------ >8 ------------------------ --- gnu/usr.sbin/sendmail/sendmail/conf.c 12 Jun 2013 21:27:22 -0000 1.35 +++ gnu/usr.sbin/sendmail/sendmail/conf.c 5 Jun 2014 10:16:18 -0000 @@ -5267,8 +5267,8 @@ closefd_walk(lowest, fd) */ void -sm_close_on_exec(highest, lowest) - int highest, lowest; +sm_close_on_exec(lowest, highest) + int lowest, highest; { #if HASFDWALK (void) fdwalk(closefd_walk, &lowest); ------------------------ >8 ------------------------ static OSStatus SSLVerifySignedServerKeyExchange(SSLContext *ctx, bool isRsa, SSLBuffer signedParams, uint8_t *signature, UInt16 signatureLen) { OSStatus err; ... if ((err = SSLHashSHA1.update(&hashCtx, &serverRandom)) != 0) goto fail; if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0) goto fail; goto fail; if ((err = SSLHashSHA1.final(&hashCtx, &hashOut)) != 0) goto fail; ... fail: SSLFreeBuffer(&signedHashes); SSLFreeBuffer(&hashCtx); return err; }
Сгенерирован: SGBlog 0.34.0