- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
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;
...
Говно с яблочным привкусом.
http://habrahabr.ru/post/213525/
P.S.: Не уверен Си это или плюсы.
Dummy00001 24.02.2014 21:25 # +6
Stertor 24.02.2014 21:29 # −5
+1
guest 25.02.2014 02:38 # +3
Чтоб наверняка? А точнее, второе гото будет безусловным.
bormand 25.02.2014 05:33 # +2
bormand 25.02.2014 08:43 # +2
Ну не могут some_hash_update() и some_hash_final() завершиться неудачей. Тупо не могут. Там просто нечему фейлиться (кроме случая, когда через этот хеш прогнали 2^61 байт, который они по-любому забыли проверить). Поэтому никакие коды возврата и исключения тут тупо не нужны.
dxd 25.02.2014 08:51 # 0
bormand 25.02.2014 08:58 # +1
buf == NULL, size == 0 - все ок, просто ничего не делаем
buf == NULL, size != 0 - аборт() или ассерт(), ибо прога явно косячная, и дальше лучше не продолжать, чтобы не запороть данные
С тем же успехом туда могли передать не нулл а просто мусор.
crastinus 25.02.2014 15:20 # +1
roman-kashitsyn 25.02.2014 15:28 # +9
roman-kashitsyn 25.02.2014 15:40 # +6
- оверхед вызова по указателю.
defecate-plusplus 25.02.2014 15:44 # 0
still better than Delphi
absolut 25.02.2014 15:54 # +1
inkanus-gray 25.02.2014 20:03 # 0
guest8 04.09.2018 17:54 # −999
absolut 25.02.2014 15:32 # 0
bormand 25.02.2014 08:57 # +2
Vindicar 25.02.2014 09:41 # +8
3Doomer 25.02.2014 11:36 # +1
Soul_re@ver 25.02.2014 11:49 # +6
3Doomer 25.02.2014 13:15 # +4
Vindicar 25.02.2014 13:53 # +5
Mea culpa, надо было это дописать.
guest 25.02.2014 14:02 # +3
3Doomer 25.02.2014 15:39 # +2
guest 25.02.2014 16:26 # +5
Да и нормальная IDE выдала бы варнинг https://twitter.com/appcode/status/437896886649757696/photo/1
roman-kashitsyn 25.02.2014 16:34 # +3
Типичная XCode не выдаёт, проверено (даже при запуске Analyze). GCC 4.8.1 не выдаёт. cppcheck 1.60.1 не выдаёт. clang и clang-check 3.4 не выдают.
Vindicar 25.02.2014 18:35 # +3
TarasB 25.02.2014 18:57 # +5
> XCode не [...]
где противоречие?
guest 25.02.2014 14:05 # +3
guest 25.02.2014 20:31 # +1
Dummy00001 26.02.2014 05:45 # 0
по тому что я читал, то железо оно обламится не может - там тупое I/O. обломится может драйвер на выделении памяти или проверке входных параметров.
bormand 26.02.2014 05:49 # +1
Кстати, а в линухе буфера для read/write/ioctl как драйверу передаются? Драйвер получает прямой доступ к реальному буферу в процессе пользователя, или он копируется в ядерную память на write и из ядерной памяти на read?
Dummy00001 26.02.2014 06:09 # +4
И первое и второе, но как правило второе. Потому что память процесса может быть свопнута: наивный доступ к памяти процесса чреват последствиями.
bormand 26.02.2014 08:00 # +2
Ну понятно, что есть случаи, когда к свопуемой памяти обращаться нельзя ни при каких условиях (тот же драйвер hdd, т.к. на нем может оказаться сам своп, или обработчики прерываний, где надо быстро вернуть управление). Но в общем случае, емнип, ядерная память вполне может своповаться...
Dummy00001 26.02.2014 15:25 # +3
В общем случае - как раз таки нет.
В кернеле, есть два типа памяти: kmalloc() vs. vmalloc(). Первое быстрее и есть настоящий кусок непрерывное физической памяти (== диапазон страниц), почему и ограниченый ресурс. Второе медленее, но можно выделять почти без ограничений - но нет гарантии непрерывности физ памяти, для DMA/в обработчике прерываний/этц пользоватся такой памятью нельзя.
Ни первое, ни второе - не свопится. Потому что линухов кернел несвопится.
Для того что бы что-то сваппилось, нужно из под кернела запускать свой спец процесс (то что в top показывается в квадратных скобках) и в этом процессе теперь можно выделять свопаемую память.
Это краткое описание. Гугли kmalloc() и vmalloc() - на гугле лежит много всего.
bormand 26.02.2014 19:38 # +1
О как, я про это не знал...
Dummy00001 26.02.2014 19:45 # +4
Я думаю что эта байка пошла с времен OS/2 которая позволяла кернел в своп записать (потому что он сидел в обычном сегменте памяти) что многие интерпретировали как "кернел свопнут". Что само собой не соответствует реальности. Если слить на диск драйвер диска и удалить его из памяти, что же его назад из свопа прочитает?
Та же фигня на микро-кернелах. Сами микро-кернела нельзя свопить. И на куче внутренних процессов стоит птичка что их из памяти удалять нельзя - например тот же своппер есть обычный процесс.
bormand 26.02.2014 19:54 # +1
Dummy00001 26.02.2014 20:01 # 0
Надо будет повтыкать как-нибудь:
http://en.wikipedia.org/wiki/Comparison_of_operating_system_kernels
chtulhu 26.02.2014 06:02 # +1
Не всегда возможно. Для вычисление хэша или какго-нибудь шифрования со сцеплением блоков необходимо получить текущее состояние железки
bormand 25.02.2014 06:37 # +6
inkanus-gray 25.02.2014 11:47 # +7
Stertor 25.02.2014 12:23 # −2
absolut 25.02.2014 13:18 # +2
guest 25.02.2014 14:06 # +3
:))))))))))))))))))))))))))))))))))))))) )
guest 25.02.2014 14:21 # +3
3.14159265 29.08.2014 13:46 # +1
А именно ОБЯЗАТЕЛЬНО ставить операторные скобки. Конечно не панацея, но в разы снижает вероятность всяких проёбов.
anonimb84a2f6fd141 29.08.2014 23:23 # +1
kegdan 30.08.2014 07:33 # 0
bormand 30.08.2014 07:40 # 0
Да принудительное форматирование и сейчас вроде как есть.
Что совсем не отменяет тестирования. Особенно в таких ответственных местах.
kegdan 30.08.2014 07:50 # 0
bormand 30.08.2014 07:54 # 0
code review
kegdan 30.08.2014 07:57 # 0
kegdan 30.08.2014 08:00 # 0
guest8 04.09.2018 17:21 # −999
g0_1494084791211 04.09.2018 17:41 # −2
guest8 04.09.2018 17:47 # −999
g0_1494084791211 04.09.2018 17:56 # −1
vistefan 04.09.2018 18:04 # −2
> из-за них деградирует структурное мышление, ибо мозгу незачем напрягаться
А из-за подсветки синтаксиса вообще наверное весь мозг отмирает за ненадобностью.
То-то я смотрю твой разум как накачанный мускул блять, от таких суровых испытаний, каждый день пишешь неподдерживаемое говно в блокноте без отступов, и посмеиваешься, пока всякие борманды деградируют со своими удобными инструментиками.
g0_1494084791211 04.09.2018 18:06 # +1