Вот ситуация:
Я анализирую взаимодействие программ с драйвером с помощью модуля LD_PRELOAD, который перехватывает системный вызов ioctl (). Система, с которой я работаю (встроенное ядро Linux 2.6.18), к счастью, имеет длину данных, закодированных в параметре 'request', поэтому я могу с радостью вывести данные ioctl правильной длины.
Однако довольно много этих данных имеют указатели на другие структуры, и я не знаю их длины (это то, что я исследую, в конце концов). Поэтому я сканирую данные на предмет указателей и сбрасываю данные в этой позиции. Я боюсь, что это может оставить мой код открытым для segfaults, если указатель находится близко к границе сегмента (и мое раннее тестирование, кажется, показывает, что это так).
Итак, мне было интересно, что я могу сделать, чтобы предварительно проверить, имеет ли текущий процесс конкретное смещение, прежде чем пытаться разыменовать? Это вообще возможно?
Редактировать: просто обновление, поскольку я забыл упомянуть кое-что, что может быть очень важным, целевая система основана на MIPS, хотя я также тестирую свой модуль на своем компьютере с архитектурой x86.