queryFirst("SELECT * FROM " . TABLE_PREFIX . "attachment WHERE attachmentid = " . $input->inputClean('attachmentid', TYPE_UINT)); if (!$attachment) { $message->error(L_INVALID_ID); } $bug = $db->queryFirst("SELECT * FROM " . TABLE_PREFIX . "bug WHERE bugid = $attachment[bugid]"); if (!check_bug_permissions($bug)) { $message->errorPermission(); } if (!can_perform('cangetattach', $bug['product'])) { $message->errorPermission(); } ob_clean(); ob_end_clean(); // only allow certain images to be displayed inline because all other types are a potential XSS issue waiting to happen if (in_array(strtolower(BSFunctions::fetch_extension($attachment['filename'])), array('jpg', 'jpeg', 'png', 'gif'))) { header("Content-Disposition: inline; filename=$attachment[filename]"); header("Content-transfer-encoding: binary"); } else { header("Content-Disposition: attachment; filename=$attachment[filename]"); } header("Content-Length: " . strlen($attachment['attachment'])); header("Content-Type: $attachment[mimetype]"); print($attachment['attachment']); ?>