The OpenNET Project / Index page

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



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

25 уязвимостей в RTOS Zephyr, в том числе эксплуатируемые че..., opennews (??), 27-Май-20, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


52. "25 уязвимостей в RTOS Zephyr, в том числе эксплуатируемые че..."  +/
Сообщение от Lex (??), 27-Май-20, 15:48 
В теории, знаковые и беззнаковые должны были всем упростить жизнь и сделать её лучше.. по крайней мере, так казалось на заре подобного типизированного подхода...

А теперь - воистину какой-то дурацкий цирк и дырявая абстракция со всеми этими интами-юинтами-8-16-32-64-итп

Ответить | Правка | К родителю #16 | Наверх | Cообщить модератору

62. "25 уязвимостей в RTOS Zephyr, в том числе эксплуатируемые че..."  +/
Сообщение от Аноним (61), 27-Май-20, 16:52 
Всему виной дебильные правила неявного приведения.
При том что typecast в uin32_t можно сделать и на void* по недосмотру(попутав переменные), во весело потом.
Ответить | Правка | Наверх | Cообщить модератору

95. "25 уязвимостей в RTOS Zephyr, в том числе эксплуатируемые че..."  +/
Сообщение от Аноним (95), 27-Май-20, 21:55 
> typecast в uin32_t можно сделать и на void* по недосмотру

Давно уже такое не позволяется ни гнутыми сями ни шлангом. Нужен промежуточный каст в (u)intptr_t

Ответить | Правка | Наверх | Cообщить модератору

100. "25 уязвимостей в RTOS Zephyr, в том числе эксплуатируемые че..."  +1 +/
Сообщение от Forth (ok), 28-Май-20, 00:42 
Может я что не так понимаю?
Ну ладно, вот такое сделаем в одну сторону и в другую:
                                                                                                                                                                                                                                    
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>

int main(void) {
  uint64_t i = 1;

  void *p;

  p = (void*) i;

  printf("%s", (char*) p);

  i = (uint64_t) p;

  printf("%ld", i);

  return 0;
}

gcc -g -Wall -Wextra -Wpedantic -O3 -std=c99 test.c

./a.out
Segmentation fault (core dumped)

P.S.
gcc version 9.3.0
Дефолтные флаги (gcc test.c) конечно тоже молчит как партизан. uint64_t ессно потому, что процессор 64 битный.

Ответить | Правка | Наверх | Cообщить модератору

103. "25 уязвимостей в RTOS Zephyr, в том числе эксплуатируемые че..."  +/
Сообщение от Аноним (95), 28-Май-20, 02:13 
> Ну ладно, вот такое сделаем в одну сторону и в другую:

Это потому что у тебя размер int-а увеличен по сравнению с условием (uint32_t). Последний в void * на 64-битной машине не скастится.

Ответить | Правка | Наверх | Cообщить модератору

106. "25 уязвимостей в RTOS Zephyr, в том числе эксплуатируемые че..."  +/
Сообщение от Forth (ok), 28-Май-20, 08:35 
Это у меня под рукой не было компилятора для 32 битной системы. Я-то думал это и так очевидно и можно на примере uin64_t показать. Но это же opennet, тут надо разжевывать.
Ладно, вот 32 бита:
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>

int main(void) {
  uint32_t i = 1;

  void *p;

  p = (void*) i;

  printf("%s", (char*) p);

  i = (uint32_t) p;

  printf("%d", i);

  return 0;
}

Выдачи от gcc ожидаемо нет:
$CC -g -Wall -Wextra -Wpedantic -O3 -std=c99 test.c
Здесь $CC это:
arm-phytec-linux-gnueabi-gcc (GCC) 7.3.0

Ответить | Правка | Наверх | Cообщить модератору

110. "25 уязвимостей в RTOS Zephyr, в том числе эксплуатируемые че..."  +/
Сообщение от Аноним (95), 28-Май-20, 14:52 
> Это у меня под рукой не было компилятора для 32 битной системы.

Use -m32, Luke

> Но это же opennet, тут надо разжевывать.

Но это же opennet, тут не принято дочитывать то, на что отвечаешь. Это про:

>> Последний в void * на 64-битной машине не скастится.

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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