avoid copying data to NULL pointer

found by clang scan-build
This commit is contained in:
Klas Lindfors
2015-07-09 10:34:39 +02:00
parent 43ffb65462
commit 3fd716791b
+10 -6
View File
@@ -271,9 +271,11 @@ ykpiv_rc ykpiv_transfer_data(ykpiv_state *state, const unsigned char *templ,
} }
return YKPIV_SIZE_ERROR; return YKPIV_SIZE_ERROR;
} }
memcpy(out_data, data, recv_len - 2); if(out_data) {
out_data += recv_len - 2; memcpy(out_data, data, recv_len - 2);
*out_len += recv_len - 2; out_data += recv_len - 2;
*out_len += recv_len - 2;
}
in_ptr += this_size; in_ptr += this_size;
} while(in_ptr < in_data + in_len); } while(in_ptr < in_data + in_len);
while(*sw >> 8 == 0x61) { while(*sw >> 8 == 0x61) {
@@ -296,9 +298,11 @@ ykpiv_rc ykpiv_transfer_data(ykpiv_state *state, const unsigned char *templ,
if(*out_len + recv_len - 2 > max_out) { if(*out_len + recv_len - 2 > max_out) {
fprintf(stderr, "Output buffer to small, wanted to write %lu, max was %lu.", *out_len + recv_len - 2, max_out); fprintf(stderr, "Output buffer to small, wanted to write %lu, max was %lu.", *out_len + recv_len - 2, max_out);
} }
memcpy(out_data, data, recv_len - 2); if(out_data) {
out_data += recv_len - 2; memcpy(out_data, data, recv_len - 2);
*out_len += recv_len - 2; out_data += recv_len - 2;
*out_len += recv_len - 2;
}
} }
rc = SCardEndTransaction(state->card, SCARD_LEAVE_CARD); rc = SCardEndTransaction(state->card, SCARD_LEAVE_CARD);
if(rc != SCARD_S_SUCCESS) { if(rc != SCARD_S_SUCCESS) {