The vulnerability is caused by not bounds checking the input buffers, when using vsprintf or sprintf. For details see the Stuttgart BugTraq archive or the SecurityFocus archive. Both links refer to the same email from Qpopper Support at Qualcomm and include the original bug report from Mixter.