История изменений
Исправление
MOPKOBKA,
(текущая версия)
:
Ты только что реализован интерфейсы на Go или struct list_head из ядра. Одно невереное движение и ты получил memory corruption, вытащив не тот тип из структуры, что нужно. Помимо экономии на спичках получили потенциальный RCE. Зачем так делать?
Так для этого и нужна template обвязка, она проверяет типы. Выйдет не менее безопасно чем если делать сразу на шаблонах.
Если ты определил RBTree<int> то не сможешь вызвать методы с char*. А внутри идет работа с безтиповыми данными.
В Go совсем по другому сделано, там void *value; а тут я предложил char value[] - Flexible array member.
Исправление
MOPKOBKA,
:
Ты только что реализован интерфейсы на Go или struct list_head из ядра. Одно невереное движение и ты получил memory corruption, вытащив не тот тип из структуры, что нужно. Помимо экономии на спичках получили потенциальный RCE. Зачем так делать?
Так для этого и нужна template обвязка, она проверяет типы. Выйдет не менее безопасно чем если делать сразу на шаблонах.
Если ты определил RBTree<int> то не сможешь вызвать методы с char*. А внутри идет работа с безтиповыми данными.
В Go совсем по другому сделано, там void *value; а тут я предложил char value[].
Исправление
MOPKOBKA,
:
Ты только что реализован интерфейсы на Go или struct list_head из ядра. Одно невереное движение и ты получил memory corruption, вытащив не тот тип из структуры, что нужно. Помимо экономии на спичках получили потенциальный RCE. Зачем так делать?
Так для этого и нужна template обвязка, она проверяет типы. Выйдет не менее безопасно чем если делать сразу на шаблонах.
Если ты определил RBTree<int> то не сможешь вызвать методы с char*. А внутри идет работа с безтиповыми данными.
В Go совсем по другому сделано, там void *value; а тут char value[].
Исправление
MOPKOBKA,
:
Ты только что реализован интерфейсы на Go или struct list_head из ядра. Одно невереное движение и ты получил memory corruption, вытащив не тот тип из структуры, что нужно. Помимо экономии на спичках получили потенциальный RCE. Зачем так делать?
Так для этого и нужна template обвязка, она проверяет типы. Выйдет не менее безопасно чем если делать сразу на шаблонах.
Если ты определил RBTree<int> то не сможешь вызвать методы с char*. А внутри идет работа с безтиповыми данными.
Исправление
MOPKOBKA,
:
Ты только что реализован интерфейсы на Go или struct list_head из ядра. Одно невереное движение и ты получил memory corruption, вытащив не тот тип из структуры, что нужно. Помимо экономии на спичках получили потенциальный RCE. Зачем так делать?
Так для этого и нужна template обвязка, она проверяет типы. Выйдет не менее безопасно чем если делать сразу на шаблонах.
Исходная версия
MOPKOBKA,
:
Ты только что реализован интерфейсы на Go или struct list_head из ядра. Одно невереное движение и ты получил memory corruption, вытащив не тот тип из структуры, что нужно. Помимо экономии на спичках получили потенциальный RCE. Зачем так делать?
Так для этого и нужна template обвязка, она проверяет типы.