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){?> picture