Some Aspect Ratios Cause DivX Player to Crash

 


Summary

We will perform domain testing on DivX Player by inputting boundary and special case values in the Aspect ratio field. DivX Player is a video player that allows the user to modify the width to height ratio of the viewed content via the Aspect ratio function. Aspect ratios smaller than 1:150 cause the application to crash, unless the ratio is too small, in which case the input is ignored.


Application Description

DivX Player is available only for Windows and is the official player application for DivX video files. It also supports other common audio and video formats. (Source: www.divx.com).

For this test we will be focusing on Set Aspect Ratio.

Set Aspect Ratio can be used to change the width and height of DivX Player and the video that is currently being played.


Test Design

This example demonstrates the use of Domain Testing.

We usually start domain testing by organizing the analysis of the variables in a table.

 

To perform this test we would try different boundary and special case values.

We would expect that the application handles all kinds of input and properly notifies the user, if the input is invalid.


Performing the Test

  1. First we have to play a video file (otherwise Set Aspect Ratio is not accessible)


  2. Select Custom aspect (to do that Right-click on the screen and select Video Display -> Set Aspect Ratio -> Custom aspect…)
  3.  

  4. Enter the boundary value 1 : 32768 (the size of a short variable in most languages and systems). Press OK.

Results/Relevance

The application crashes.

 

After trying some different numbers for the width field, it turns out that the application crashes for ratios smaller than 1:150. But if it gets too small (e.g. 1:2147483648), the application just ignores the input and does not crash.

Even though the result is very unpleasant, it is very unlikely that the user will enter such aspect ratios on purpose. Such corner cases are a typical problem for Domain Testing.

Fortunately, we can use the information we gathered to perform similar tests in the area and find bugs that are more likely to occur in the real world (e.g. In Some Cases DivX Player Appears Frozen).


Similar Tests/Additional Notes

  1. We can also try similar tests using other values from our boundary table. Enter -1 for width and 1 for height. Click OK.

 

  1. The first test case didn’t reveal any errors. The application correctly identified the negative number for the width and did not allow it. Now let's try 32768 for width (the upper bound of a short data type on most systems).

 

  1. The value from the last test case was accepted.
    Now let’s try with the test case that tests the upper bound of an integer data type (2147483648).

 

The application did not accept the last input. The interesting fact is that the error message (in red) says that the input must be positive. This can mean that either the application uses the same error message independent of the actual error or the value of the field has overflowed to the smallest negative value.

  1. If at 2147483648 the height variable overflowed to the smallest negative number, then entering 4294967297 (which is 2^32 +1) should overflow the variable to 1. Let’s try it.

 

Just as suspected the height variable overflowed form 4294967297 to 1. It looks like there is no overflow protection for this field.


Configuration

Testing DivXNetworks' DivX Player v2.5.3 on:


Created 01 May 2004 for the CSTER

All images and written material ©Copyright Georgi Nikolov 2004

This work is licensed under the Creative Commons Attribution-ShareAlike License.
To view a copy of this license, visit
http://creativecommons.org/licenses/by-sa/2.0/
or send a letter to
Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305,
USA.