LINUX.ORG.RU

История изменений

Исправление 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 обвязка, она проверяет типы.