KPI, mbuf, strange mbuf and mbuf_len strange definition
KPI, mbuf, strange mbuf and mbuf_len strange definition
- Subject: KPI, mbuf, strange mbuf and mbuf_len strange definition
- From: Stephane Sudre <email@hidden>
- Date: Thu, 8 Dec 2005 20:25:34 +0100
Could there be a problem with the declaration of mbuf_len?
size_t mbuf_len(mbuf_t mbuf);
size_t is said to be a __darwin_size_t
__darwin_size_t is said to be __SIZE_TYPE__
__SIZE_TYPE__ is said to be long unsigned int (from what I've found
with google).
My problem is that the m_hdr struct is stating (in the xnu source code):
struct m_hdr {
struct mbuf *mh_next; /* next buffer in chain */
struct mbuf *mh_nextpkt; /* next chain in queue/record */
long mh_len; /* amount of data in this mbuf */
so mh_len is signed if I'm not mistaken.
This is a bit "funny" when you're trying to deal with this kind of
weird mbuf chain :
p *((struct mbuf *) 0x3d1fd100)
$3 = {
m_hdr = {
mh_next = 0x3d221700,
mh_nextpkt = 0x0,
mh_len = 0,
mh_data = 0x3d1fd13b "@\002\001?\b>\006l!E",
mh_type = 0,
mh_flags = 0
},
....
p *((struct mbuf *) 0x3d221700)
$5 = {
m_hdr = {
mh_next = 0x3d221600,
mh_nextpkt = 0xfffffff7,
mh_len = -1,
mh_data = 0xffffffff <Address 0xffffffff out of bounds>,
mh_type = 0,
mh_flags = -1
},
and you're testing if (mbuf_len( ) < 0) ...
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Darwin-kernel mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden