LINUX.ORG.RU

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

Исправление iluha16, (текущая версия) :

а если к примеру для конфигурации сети должен быть отредактирован некий файл содержащий конфиг в бинарном виде. ты десериализируешь его в C структуру. предположим ПО поддерживает pppoe и прямое подключение в сеть ethernet. таким образом имеем

struct {
  int connection_type; // 1 for ethernet, 2 for pppoe
  
  // ethernet specific fields
  int ip;
  int netmask;
  
  // pppoe specific fields
  char *username;
  char *password;
};

что помешает тебе без энкапсуляции поставить connection_type = 2 не указав при этом username/password и как следствие сохранить инвалидную информацию в бинарный файл который и отредактировать простым текстовым способом нельзя. как вариант при попытке открыть этот файл для редактирования твоя прожка будет падать в сегфолт потому что будет пытаться прочитать username/password из неинициализированного адреса.

Исходная версия iluha16, :

а если к примеру для конфигурации сети должен быть отредактирован некий файл содержащий конфиг в бинарном виде. ты десериализируешь его в C структуру. предположим ПО поддерживает pppoe и прямое подключение в сеть ethernet. таким образом имеем

struct { int connection_type; // 1 for ethernet, 2 for pppoe // ethernet specific fields int ip; int netmask; // pppoe specific fields char *username; char *password; };

что помешает тебе без энкапсуляции поставить connection_type = 2 не указав при этом username/password и как следствие сохранить инвалидную информацию в бинарный файл который и отредактировать простым текстовым способом нельзя. как вариант при попытке открыть этот файл для редактирования твоя прожка будет падать в сегфолт потому что будет пытаться прочитать username/password из неинициализированного адреса.