diff options
author | Suren A. Chilingaryan <csa@dside.dyndns.org> | 2012-10-22 21:08:46 +0200 |
---|---|---|
committer | Suren A. Chilingaryan <csa@dside.dyndns.org> | 2012-10-22 21:08:46 +0200 |
commit | 90895b21b4b87f1f8f5ff8854c0de376f7688146 (patch) | |
tree | 059c566e2eb4e144f1ab3c76b26feb9614573997 /ipecamera | |
parent | 761270f64b565f433233455e093a6a0b0ab6c747 (diff) | |
download | ipecamera-90895b21b4b87f1f8f5ff8854c0de376f7688146.tar.gz ipecamera-90895b21b4b87f1f8f5ff8854c0de376f7688146.tar.bz2 ipecamera-90895b21b4b87f1f8f5ff8854c0de376f7688146.tar.xz ipecamera-90895b21b4b87f1f8f5ff8854c0de376f7688146.zip |
Skip non-informative packets on DMA
Diffstat (limited to 'ipecamera')
-rw-r--r-- | ipecamera/ipecamera.c | 1 | ||||
-rw-r--r-- | ipecamera/reader.c | 6 |
2 files changed, 6 insertions, 1 deletions
diff --git a/ipecamera/ipecamera.c b/ipecamera/ipecamera.c index 25fa060..d1a9102 100644 --- a/ipecamera/ipecamera.c +++ b/ipecamera/ipecamera.c @@ -557,6 +557,7 @@ int ipecamera_stop(pcilib_context_t *vctx, pcilib_event_flags_t flags) { ctx->frame_mutex_destroy = 0; } + if (ctx->wdma != PCILIB_DMA_ENGINE_INVALID) { pcilib_stop_dma(vctx->pcilib, ctx->wdma, PCILIB_DMA_FLAGS_DEFAULT); ctx->wdma = PCILIB_DMA_ENGINE_INVALID; diff --git a/ipecamera/reader.c b/ipecamera/reader.c index 048f536..5fb5840 100644 --- a/ipecamera/reader.c +++ b/ipecamera/reader.c @@ -98,7 +98,11 @@ static int ipecamera_data_callback(void *user, pcilib_dma_flags_t flags, size_t size_t startpos; for (startpos = 0; (startpos + 8) < bufsize; startpos++) { if (!memcmp(buf + startpos, frame_magic, sizeof(frame_magic))) break; -//o raw_size = + } + + if ((startpos + 8) >= bufsize) { + pcilib_warning("Invalid DMA packet received"); + return PCILIB_STREAMING_REQ_FRAGMENT; } if (startpos) { |