sendto(msg) points to uninitialised byte(s)
- From: BlueJ <pengbin@xxxxxxxxx>
- Date: Thu, 18 Oct 2007 03:06:53 -0700
My program is to send data using socket.. but I got the error message:
"sendto(msg) points to uninitialised byte(s) " This is my source code
1. key_list = emalloc(BUFSIZE - sizeof(Key) - sizeof(byte) -
sizeof(int));
bzero(key_list, sizeof(*key_list));
bp = key_list;
memmove(bp, key, ID_LEN);
bp += ID_LEN;
memmove(bp, &ip_num, sizeof(int));
bp += sizeof(int);
pack_addr = htonl(addr);
memmove(bp, &pack_addr, sizeof(ulong));
bp +=sizeof(ulong);
Ivn_send_key(srv, ttl, succ->addr, succ->port, bp, (bp -
key_list), addr, port);
2.
void Ivn_send_key(Vnode *srv, byte ttl, ulong to_addr, ushort
to_port, uchar *key_list, int list_len, ulong addr, ushort port)
{
byte buf[BUFSIZE];
Ivn_send_raw(srv, to_addr, to_port, Ivn_pack_key(buf, ttl, key_list,
list_len, addr, port), buf);
}
3.
int Ivn_pack_key(uchar *buf, byte ttl, uchar *key_list, int list_len,
ulong addr, ushort port)
{
//return Ivn_pack(buf, "ccxls", CHORD_KEY, ttl, key_list , port);
uchar *bp;
ushort sport;
bp = buf;
*bp++ = CHORD_KEY;
*bp++ = ttl;
sport = htons(port); //port number
memmove(bp, (char *)&sport, sizeof(ushort));
bp += sizeof(ushort);
memmove(bp, key_list, list_len);
bp += list_len;
free(key_list);
return bp -buf;
}
4.
void Ivn_send_raw(Vnode *srv, in_addr_t addr, in_port_t port, int n,
uchar *buf)
{
struct sockaddr_in dest;
memset(&dest, 0, sizeof(dest));
dest.sin_family = AF_INET;
dest.sin_port = htons(port);
dest.sin_addr.s_addr = htonl(addr);
//fprintf(stderr, " dst addr is %s\n", inet_ntoa(dest.sin_addr));
if (sendto(srv->out_sock, buf, n, 0, (struct sockaddr *) &dest,
sizeof(dest)) < 0)
warnm("sendto failed:"); /* ignore errors for now */
}
please help to correct the error?
.
- Follow-Ups:
- Re: sendto(msg) points to uninitialised byte(s)
- From: jaysome
- Re: sendto(msg) points to uninitialised byte(s)
- From: Jack Klein
- Re: sendto(msg) points to uninitialised byte(s)
- From: Peter Pichler
- Re: sendto(msg) points to uninitialised byte(s)
- From: CBFalconer
- Re: sendto(msg) points to uninitialised byte(s)
- Prev by Date: Re: C both slow and memory-hungry for embedded systems?
- Next by Date: The sizeof operator : sizeof(++i)
- Previous by thread: Is realloc good form ?
- Next by thread: Re: sendto(msg) points to uninitialised byte(s)
- Index(es):
Relevant Pages
|
|