--- lib/libsdp/service.c (revision 326219) +++ lib/libsdp/service.c (working copy) @@ -178,7 +178,7 @@ pdu.tid = htons(++ss->tid); pdu.len = htons(sizeof(handle) + datalen); - handle = htons(handle); + handle = htonl(handle); iov[0].iov_base = (void *) &pdu; iov[0].iov_len = sizeof(pdu); @@ -227,8 +227,8 @@ return (-1); } - error = (uint16_t) ss->rsp[sizeof(pdu)] << 8; - error |= (uint16_t) ss->rsp[sizeof(pdu) + 1]; + error = (uint16_t) ss->rsp[sizeof(*pdu)] << 8; + error |= (uint16_t) ss->rsp[sizeof(*pdu) + 1]; if (error != 0) { ss->error = EIO;