Protect ring-buffer write from nullptr

This commit is contained in:
Xavier Arteaga 2020-10-30 10:17:05 +01:00 committed by Xavier Arteaga
parent 369cffec00
commit c2621cc4f8
1 changed files with 15 additions and 5 deletions

View File

@ -147,6 +147,7 @@ int srslte_ringbuffer_write_timed_block(srslte_ringbuffer_t* q, void* p, int nof
} else if (!q->active) {
ret = SRSLTE_SUCCESS;
} else if (ret == SRSLTE_SUCCESS) {
if (ptr != NULL) {
if (w_bytes > q->capacity - q->wpm) {
int x = q->capacity - q->wpm;
memcpy(&q->buffer[q->wpm], ptr, x);
@ -154,6 +155,15 @@ int srslte_ringbuffer_write_timed_block(srslte_ringbuffer_t* q, void* p, int nof
} else {
memcpy(&q->buffer[q->wpm], ptr, w_bytes);
}
} else {
if (w_bytes > q->capacity - q->wpm) {
int x = q->capacity - q->wpm;
memset(&q->buffer[q->wpm], 0, x);
memset(q->buffer, 0, w_bytes - x);
} else {
memset(&q->buffer[q->wpm], 0, w_bytes);
}
}
q->wpm += w_bytes;
if (q->wpm >= q->capacity) {
q->wpm -= q->capacity;