[gnome-shell/gnome-3-12] screenshot: Also validate parameters to FlashArea()
- From: Florian Müllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell/gnome-3-12] screenshot: Also validate parameters to FlashArea()
- Date: Wed, 4 Jun 2014 16:15:17 +0000 (UTC)
commit 5852c17f76122930ad484be884c85080bcb39039
Author: Florian Müllner <fmuellner gnome org>
Date: Wed Jun 4 16:26:06 2014 +0200
screenshot: Also validate parameters to FlashArea()
Apply the same parameter validation to FlashArea() we already use
for ScreenshotArea().
https://bugzilla.gnome.org/show_bug.cgi?id=731220
js/ui/screenshot.js | 26 ++++++++++++++++++++------
1 files changed, 20 insertions(+), 6 deletions(-)
---
diff --git a/js/ui/screenshot.js b/js/ui/screenshot.js
index 432a39d..80c3c1d 100644
--- a/js/ui/screenshot.js
+++ b/js/ui/screenshot.js
@@ -67,6 +67,13 @@ const ScreenshotService = new Lang.Class({
Gio.DBus.session.own_name('org.gnome.Shell.Screenshot', Gio.BusNameOwnerFlags.REPLACE, null, null);
},
+ _checkArea: function(x, y, width, height) {
+ return x >= 0 && y >= 0 &&
+ width > 0 && height > 0 &&
+ x + width <= global.screen_width &&
+ y + height <= global.screen_height;
+ },
+
_onScreenshotComplete: function(obj, result, area, filenameUsed, flash, invocation) {
if (flash && result) {
let flashspot = new Flashspot(area);
@@ -79,11 +86,10 @@ const ScreenshotService = new Lang.Class({
ScreenshotAreaAsync : function (params, invocation) {
let [x, y, width, height, flash, filename, callback] = params;
- if (x < 0 || y < 0 ||
- width <= 0 || height <= 0 ||
- x + width > global.screen_width || y + height > global.screen_height) {
- invocation.return_error_literal(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED,
- "Invalid params");
+ if (!this._checkArea(x, y, width, height)) {
+ invocation.return_error_literal(Gio.IOErrorEnum,
+ Gio.IOErrorEnum.CANCELLED,
+ "Invalid params");
return;
}
let screenshot = new Shell.Screenshot();
@@ -125,9 +131,17 @@ const ScreenshotService = new Lang.Class({
}));
},
- FlashArea: function(x, y, width, height) {
+ FlashAreaAsync: function(params, invocation) {
+ let [x, y, width, height] = params;
+ if (!this._checkArea(x, y, width, height)) {
+ invocation.return_error_literal(Gio.IOErrorEnum,
+ Gio.IOErrorEnum.CANCELLED,
+ "Invalid params");
+ return;
+ }
let flashspot = new Flashspot({ x : x, y : y, width: width, height: height});
flashspot.fire();
+ invocation.return_value(null);
}
});
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]