webrtc/sdk/objc/unittests/RTCNV12TextureCache_xctest.m
Aaron Golden fb4e9bc9a2 Add a missing NULL check before releasing a texture ref.
This causes a crash if the NV12 texture cache attempts to upload textures
for a frame with a NULL backing CVPixelBufferRef.

Bug: webrtc:10175
Change-Id: I6866dcde5ace745cbd95b762254294aa8406c2a5
Reviewed-on: https://webrtc-review.googlesource.com/c/115430
Commit-Queue: Chuck Hays <haysc@webrtc.org>
Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26140}
2019-01-04 21:08:05 +00:00

53 lines
1.7 KiB
Objective-C

/*
* Copyright 2018 The WebRTC project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#import <CoreVideo/CoreVideo.h>
#import <Foundation/Foundation.h>
#import <GLKit/GLKit.h>
#import <XCTest/XCTest.h>
#import "base/RTCVideoFrame.h"
#import "base/RTCVideoFrameBuffer.h"
#import "components/renderer/opengl/RTCNV12TextureCache.h"
#import "components/video_frame_buffer/RTCCVPixelBuffer.h"
@interface RTCNV12TextureCacheTests : XCTestCase
@end
@implementation RTCNV12TextureCacheTests {
EAGLContext *_glContext;
RTCNV12TextureCache *_nv12TextureCache;
}
- (void)setUp {
[super setUp];
_glContext = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3];
if (!_glContext) {
_glContext = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];
}
_nv12TextureCache = [[RTCNV12TextureCache alloc] initWithContext:_glContext];
}
- (void)tearDown {
_nv12TextureCache = nil;
_glContext = nil;
[super tearDown];
}
- (void)testNV12TextureCacheDoesNotCrashOnEmptyFrame {
CVPixelBufferRef nullPixelBuffer = NULL;
RTCCVPixelBuffer *badFrameBuffer = [[RTCCVPixelBuffer alloc] initWithPixelBuffer:nullPixelBuffer];
RTCVideoFrame *badFrame = [[RTCVideoFrame alloc] initWithBuffer:badFrameBuffer
rotation:RTCVideoRotation_0
timeStampNs:0];
[_nv12TextureCache uploadFrameToTextures:badFrame];
}
@end