Ticket #5326: libs_libmythtv-forward-null.patch

File libs_libmythtv-forward-null.patch, 2.0 KB (added by Erik Hovland <erik@…>, 12 years ago)

makes sure codec_ctx is not null before dereferencing

  • libs/libmythtv/avformatdecoder.cpp

    Fix any instance where null is checked (or tracked) in
    
    From: Erik Hovland <erik@hovland.org>
    
    a function once and not checked every time the pointer
    is used.
    ---
    
     libs/libmythtv/avformatdecoder.cpp |   25 +++++++++++++++++--------
     1 files changed, 17 insertions(+), 8 deletions(-)
    
    diff --git a/libs/libmythtv/avformatdecoder.cpp b/libs/libmythtv/avformatdecoder.cpp
    index 177642f..11fbffe 100644
    a b bool AvFormatDecoder::SetupAudioStream(void) 
    39763976        assert(curstream);
    39773977        assert(curstream->codec);
    39783978        codec_ctx = curstream->codec;       
    3979         bool do_ac3_passthru = (allow_ac3_passthru && !transcoding &&
    3980                                 (codec_ctx->codec_id == CODEC_ID_AC3));
    3981         bool do_dts_passthru = (allow_dts_passthru && !transcoding &&
    3982                                 (codec_ctx->codec_id == CODEC_ID_DTS));
    3983         using_passthru = do_ac3_passthru || do_dts_passthru;
    3984         info = AudioInfo(codec_ctx->codec_id,
    3985                          codec_ctx->sample_rate, codec_ctx->channels,
    3986                          using_passthru && !disable_passthru);
     3979        if (codec_ctx)
     3980        {
     3981            bool do_ac3_passthru = (allow_ac3_passthru && !transcoding &&
     3982                                    (codec_ctx->codec_id == CODEC_ID_AC3));
     3983            bool do_dts_passthru = (allow_dts_passthru && !transcoding &&
     3984                                    (codec_ctx->codec_id == CODEC_ID_DTS));
     3985            using_passthru = do_ac3_passthru || do_dts_passthru;
     3986            info = AudioInfo(codec_ctx->codec_id,
     3987                             codec_ctx->sample_rate, codec_ctx->channels,
     3988                             using_passthru && !disable_passthru);
     3989        }
    39873990    }
    39883991
     3992    if (!codec_ctx)
     3993    {
     3994        VERBOSE(VB_IMPORTANT, "No codec context. Returning false");
     3995        return false;
     3996    }
     3997
    39893998    if (info == audioIn)
    39903999        return false; // no change
    39914000