diff --git a/src/usr/local/www/widgets/widgets/picture.widget.php b/src/usr/local/www/widgets/widgets/picture.widget.php
index 981ec5dbd5..41a3702ec3 100644
--- a/src/usr/local/www/widgets/widgets/picture.widget.php
+++ b/src/usr/local/www/widgets/widgets/picture.widget.php
@@ -25,6 +25,7 @@ require_once("guiconfig.inc");
require_once("pfsense-utils.inc");
require_once("functions.inc");
+
if ($_GET['getpic']=="true") {
$pic_type_s = explode(".", $user_settings['widgets'][$_GET['widgetkey']]['picturewidget_filename']);
$pic_type = $pic_type_s[1];
@@ -40,7 +41,6 @@ if ($_GET['getpic']=="true") {
if ($_POST['widgetkey']) {
set_customwidgettitle($user_settings);
-
if (is_uploaded_file($_FILES['pictfile']['tmp_name'])) {
/* read the file contents */
$fd_pic = fopen($_FILES['pictfile']['tmp_name'], "rb");
@@ -53,6 +53,14 @@ if ($_POST['widgetkey']) {
log_error("Warning, could not read file " . $_FILES['pictfile']['tmp_name']);
die("Could not read temporary file");
} else {
+ // Make sure they upload an image and not some other file
+ $img_info =getimagesize($_FILES['pictfile']['tmp_name']);
+ if($img_info === FALSE){
+ die("Unable to determine image type of uploaded file");
+ }
+ if(($img_info[2] !== IMAGETYPE_GIF) && ($img_info[2] !== IMAGETYPE_JPEG) && ($img_info[2] !== IMAGETYPE_PNG)){
+ die("Not a gif/jpg/png");
+ }
$picname = basename($_FILES['uploadedfile']['name']);
$user_settings['widgets'][$_POST['widgetkey']]['picturewidget'] = base64_encode($data);
$user_settings['widgets'][$_POST['widgetkey']]['picturewidget_filename'] = $_FILES['pictfile']['name'];
@@ -66,14 +74,14 @@ if ($_POST['widgetkey']) {
?>
+if($user_settings['widgets'][$widgetkey]["picturewidget"] != null){?>