Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Evergreen:11.4
ncpfs
ncpfs-hg-commit-427.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File ncpfs-hg-commit-427.patch of Package ncpfs
changeset: 427:225fa587c2d8 user: Petr Vandrovec <petr@vandrovec.name> date: Sun Jun 05 14:35:13 2005 +0000 files: ipx-1.0/Samples/rip.c ipx-1.0/Samples/sap.c description: Fix problems in ipx samples when packet with zero or 1 byte received. diff -r 08cd551d8c1c -r 225fa587c2d8 ipx-1.0/Samples/rip.c --- a/ipx-1.0/Samples/rip.c Sun Jun 05 14:23:57 2005 +0000 +++ b/ipx-1.0/Samples/rip.c Sun Jun 05 14:35:13 2005 +0000 @@ -36,6 +36,8 @@ main(int argc, char **argv) } while (1) { + size_t rclen; + len = sizeof(sipx); result = recvfrom(s, msg, sizeof(msg), 0, (struct sockaddr *) &sipx, &len); @@ -44,8 +46,12 @@ main(int argc, char **argv) perror("IPX: recvfrom"); exit(-1); } + if (result < 2) { + fprintf(stderr, "Received packet is too short to be RIP packet (%d bytes)\n", result); + continue; + } + rclen = result - 2; bptr = msg; - result -= 2; printf("RIP packet from: %08X:%02X%02X%02X%02X%02X%02X\n", (u_int32_t)htonl(sipx.sipx_network), sipx.sipx_node[0], sipx.sipx_node[1], @@ -53,11 +59,11 @@ main(int argc, char **argv) sipx.sipx_node[6], sipx.sipx_node[5]); bptr += 2; rp = (struct rip_data *) bptr; - while (result >= sizeof(struct rip_data)) + while (rclen >= sizeof(struct rip_data)) { printf("\tNET: %08X HOPS: %d\n", (u_int32_t)ntohl(rp->rip_net), ntohs(rp->rip_hops)); - result -= sizeof(struct rip_data); + rclen -= sizeof(struct rip_data); rp++; } } diff -r 08cd551d8c1c -r 225fa587c2d8 ipx-1.0/Samples/sap.c --- a/ipx-1.0/Samples/sap.c Sun Jun 05 14:23:57 2005 +0000 +++ b/ipx-1.0/Samples/sap.c Sun Jun 05 14:35:13 2005 +0000 @@ -47,6 +47,8 @@ main(int argc, char **argv) } while (1) { + size_t rclen; + len = 1024; result = recvfrom(s, msg, sizeof(msg), 0, (struct sockaddr *) &sipx, &len); @@ -55,16 +57,20 @@ main(int argc, char **argv) perror("IPX: recvfrom: "); exit(-1); } + if (result < 2) { + fprintf(stderr, "Received packet is too short to be SAP packet (%d bytes)\n", result); + continue; + } + rclen = result - 2; bptr = msg; - result -= 2; printf("SAP: OP is %x %x\n", bptr[0], bptr[1]); - printf("Length is %d\n", result); + printf("Length is %u\n", rclen); if (bptr[1] != 2) continue; bptr += 2; sp = (struct sap_data *) bptr; - while (result >= sizeof(struct sap_data)) + while (rclen >= sizeof(struct sap_data)) { int i; @@ -83,7 +89,7 @@ main(int argc, char **argv) sp->sap_node[4], sp->sap_node[5], ntohs(sp->sap_sock)); - result -= sizeof(struct sap_data); + rclen -= sizeof(struct sap_data); sp++; } }
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor