diff options
author | brian <brian@FreeBSD.org> | 2009-08-24 17:18:17 +0000 |
---|---|---|
committer | brian <brian@FreeBSD.org> | 2009-08-24 17:18:17 +0000 |
commit | 713a988257803198210ed1fa32fb351909facd52 (patch) | |
tree | af7b4b6a810ab2e555809c5f8d6db2c6b3fe1604 /usr.sbin/ppp/ether.c | |
parent | ba7b3afabc9c18fbc00ee2b3a04d75cc7bf6f923 (diff) | |
download | FreeBSD-src-713a988257803198210ed1fa32fb351909facd52.zip FreeBSD-src-713a988257803198210ed1fa32fb351909facd52.tar.gz |
When realloc()ing device memory for transfer to another ppp process,
don't continue to use the realloc()d pointer - it might have changed!
Remove some stray diagnostics while I'm here.
MFC after: 3 days
Diffstat (limited to 'usr.sbin/ppp/ether.c')
-rw-r--r-- | usr.sbin/ppp/ether.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/usr.sbin/ppp/ether.c b/usr.sbin/ppp/ether.c index e4e154a..a86f3bd 100644 --- a/usr.sbin/ppp/ether.c +++ b/usr.sbin/ppp/ether.c @@ -193,17 +193,18 @@ static void ether_device2iov(struct device *d, struct iovec *iov, int *niov, int maxiov __unused, int *auxfd, int *nauxfd) { - struct etherdevice *dev = device2ether(d); + struct etherdevice *dev; int sz = physical_MaxDeviceSize(); - iov[*niov].iov_base = realloc(d, sz); - if (iov[*niov].iov_base == NULL) { + iov[*niov].iov_base = d = realloc(d, sz); + if (d == NULL) { log_Printf(LogALERT, "Failed to allocate memory: %d\n", sz); AbortProgram(EX_OSERR); } iov[*niov].iov_len = sz; (*niov)++; + dev = device2ether(d); if (dev->cs >= 0) { *auxfd = dev->cs; (*nauxfd)++; |