Closed elqver closed 2 years ago
self.payload is a defined as a pointer and passed to a C lib function (libnetfilterqueue). the payload data is allocated in memory by the C lib and initialized to point to the data. Because of this, once you set a verdict on the packet the payload and all other pointers/references held to memory allocated in the C lib will no longer be valid.
@DOWRIGHTTV your understanding of the libnetfilter_queue API is incorrect as I explained in the other issue you opened; the payload pointer points into a buffer stack-allocated in run()
and we null it out once it might have been reused for a different packet.
@elqver you're quite right, this is my bad and I just uploaded #89 to fix it!
This code results with segmentation fault
Looks like str method is not safe, because there is no check for NULL of
self.payload
:Is this ok, can that be fixed?