The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"На соревновании Pwn2Own 2019 продемонстрированы взломы Firef..."
Отправлено Аноним84701, 22-Мрт-19 22:41 
> Целочисленное переполнение

Там не все так просто, простенькая демка:


% cat overflow.c
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
int main(int argc , char* argv[argc +1]) {
    if (argc < 2) return EXIT_FAILURE;
    
    int32_t x = strtol(argv[1], NULL, 10); // это чтобы нам компилятор еще на начальной стадии не соптимизировал все до return 0
    while (x > 0) x++;
    printf("result %dl\n",x);
    return EXIT_SUCCESS;
}
% gcc8 -Wall -Wextra -std=c11 -S -g overflow.c
.L5:
        .loc 1 8 20 discriminator 2
        addl    $1, -4(%rbp)
.L4:
        .loc 1 8 11 discriminator 1
        cmpl    $0, -4(%rbp)
        jg      .L5

Вроде как все ожидаемо, но:

% gcc8 -Wall -Wextra -std=c11 -g -O2 overflow.c
.L4:
        .loc 1 8 19 is_stmt 1 discriminator 2 view .LVU10
        .loc 1 8 19 discriminator 2 view .LVU11
        .loc 1 8 19 is_stmt 0 discriminator 2 view .LVU12
        jmp     .L4

Компилятор здорово "оптимизнул" UB (если мне не изменяет память - лезть в спеки сейчас совсем неохота), т.е. без всяких варнингов мы поймали вечный цикл "на ровном" месте.

Ну и классическое (не)знание, это ж типа "Дорогая (даже на x86, угу) проверка! Мы точно знаем! Без нее в 100500 раз быстрее"  ;)


>  Как в NASA умудряются писать, что 40 лет работают космические аппараты (те же Вояджеры,
> например)?

Mariner1, Delta 3,  Mars Lander, Mars Orbiter :)

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру