Fix a few null pointer dereferences

This commit is contained in:
Jef Driesen 2017-02-10 20:04:47 +01:00
parent e96611cccd
commit 24cbff9a9f
3 changed files with 12 additions and 6 deletions

View File

@ -405,7 +405,7 @@ dc_irda_read (dc_irda_t *device, void *data, size_t size, size_t *actual)
if (device == NULL) {
status = DC_STATUS_INVALIDARGS;
goto out;
goto out_invalidargs;
}
struct timeval tv;
@ -449,6 +449,7 @@ dc_irda_read (dc_irda_t *device, void *data, size_t size, size_t *actual)
out:
HEXDUMP (device->context, DC_LOGLEVEL_INFO, "Read", (unsigned char *) data, nbytes);
out_invalidargs:
if (actual)
*actual = nbytes;
@ -463,7 +464,7 @@ dc_irda_write (dc_irda_t *device, const void *data, size_t size, size_t *actual)
if (device == NULL) {
status = DC_STATUS_INVALIDARGS;
goto out;
goto out_invalidargs;
}
while (nbytes < size) {
@ -485,6 +486,7 @@ dc_irda_write (dc_irda_t *device, const void *data, size_t size, size_t *actual)
out:
HEXDUMP (device->context, DC_LOGLEVEL_INFO, "Write", (unsigned char *) data, nbytes);
out_invalidargs:
if (actual)
*actual = nbytes;

View File

@ -570,7 +570,7 @@ dc_serial_read (dc_serial_t *device, void *data, size_t size, size_t *actual)
if (device == NULL) {
status = DC_STATUS_INVALIDARGS;
goto out;
goto out_invalidargs;
}
// The total timeout.
@ -647,6 +647,7 @@ dc_serial_read (dc_serial_t *device, void *data, size_t size, size_t *actual)
out:
HEXDUMP (device->context, DC_LOGLEVEL_INFO, "Read", (unsigned char *) data, nbytes);
out_invalidargs:
if (actual)
*actual = nbytes;
@ -661,7 +662,7 @@ dc_serial_write (dc_serial_t *device, const void *data, size_t size, size_t *act
if (device == NULL) {
status = DC_STATUS_INVALIDARGS;
goto out;
goto out_invalidargs;
}
struct timeval tve, tvb;
@ -754,6 +755,7 @@ dc_serial_write (dc_serial_t *device, const void *data, size_t size, size_t *act
out:
HEXDUMP (device->context, DC_LOGLEVEL_INFO, "Write", (unsigned char *) data, nbytes);
out_invalidargs:
if (actual)
*actual = nbytes;

View File

@ -414,7 +414,7 @@ dc_serial_read (dc_serial_t *device, void *data, size_t size, size_t *actual)
if (device == NULL) {
status = DC_STATUS_INVALIDARGS;
goto out;
goto out_invalidargs;
}
if (!ReadFile (device->hFile, data, size, &dwRead, NULL)) {
@ -431,6 +431,7 @@ dc_serial_read (dc_serial_t *device, void *data, size_t size, size_t *actual)
out:
HEXDUMP (device->context, DC_LOGLEVEL_INFO, "Read", (unsigned char *) data, dwRead);
out_invalidargs:
if (actual)
*actual = dwRead;
@ -445,7 +446,7 @@ dc_serial_write (dc_serial_t *device, const void *data, size_t size, size_t *act
if (device == NULL) {
status = DC_STATUS_INVALIDARGS;
goto out;
goto out_invalidargs;
}
LARGE_INTEGER begin, end, freq;
@ -501,6 +502,7 @@ dc_serial_write (dc_serial_t *device, const void *data, size_t size, size_t *act
out:
HEXDUMP (device->context, DC_LOGLEVEL_INFO, "Write", (unsigned char *) data, dwWritten);
out_invalidargs:
if (actual)
*actual = dwWritten;