Fixed vulnerabilities and few design suspicions where two conditional structures are having the same implementation.

This commit is contained in:
Aditya Toshniwal
2020-06-17 17:15:09 +05:30
committed by Akshay Joshi
parent 7c12ade161
commit df05efd7d9
9 changed files with 28 additions and 86 deletions

View File

@@ -1057,14 +1057,16 @@ class IndexesView(PGChildNodeView, SchemaDiffObjectCompare):
for key in required_create_keys: for key in required_create_keys:
if key in diff_dict: if key in diff_dict:
if (key == 'columns' and (( if key == 'columns' and ((
'added' in diff_dict[key] and 'added' in diff_dict[key] and
len(diff_dict[key]['added']) > 0 len(diff_dict[key]['added']) > 0
) or ('changed' in diff_dict[key] and ) or ('changed' in diff_dict[key] and
len(diff_dict[key]['changed']) > 0) or ( len(diff_dict[key]['changed']) > 0) or (
'deleted' in diff_dict[key] and 'deleted' in diff_dict[key] and
len(diff_dict[key]['deleted']) > 0) len(diff_dict[key]['deleted']) > 0)
)) or key != 'columns': ):
create_req = True
elif key != 'columns':
create_req = True create_req = True
if create_req: if create_req:

View File

@@ -757,9 +757,9 @@ class BaseTableView(PGChildNodeView, BasePartitionTable):
elif key == 'foreign_key': elif key == 'foreign_key':
if 'oid' not in data: if 'oid' not in data:
for arg in ['columns']: for arg in ['columns']:
if arg not in data: if arg not in data or \
return False (isinstance(data[arg], list) and
elif isinstance(data[arg], list) and len(data[arg]) < 1: len(data[arg]) < 1):
return False return False
if 'autoindex' in data and \ if 'autoindex' in data and \

View File

@@ -626,16 +626,8 @@ define(['sources/gettext', 'underscore', 'jquery', 'backbone', 'backform',
commonUtils.handleKeyNavigation(event); commonUtils.handleKeyNavigation(event);
} }
if (command.moveUp() || command.moveDown() || command.save()) { if (command.moveUp() || command.moveDown() || command.save() || command.cancel() ||
// backgrid vertical navigation (Up/Down arrow key) (command.moveLeft() && ev.target.name === 'privilege' && $(ev.target).attr('privilege') === 'ALL')) {
ev.preventDefault();
ev.stopPropagation();
this.model.trigger('backgrid:edited', this.model, this.column, command);
// model.trigger('backgrid:edited', model, column, command);
return;
}
// esc
else if (command.cancel()) {
// undo // undo
ev.stopPropagation(); ev.stopPropagation();
model.trigger('backgrid:edited', model, column, command); model.trigger('backgrid:edited', model, column, command);
@@ -650,12 +642,6 @@ define(['sources/gettext', 'underscore', 'jquery', 'backbone', 'backform',
return; return;
} }
} }
} else if (command.moveLeft() && ev.target.name === 'privilege' &&
$(ev.target).attr('privilege') === 'ALL') {
// If we are at the fist privilege then we should move to previous cell
ev.stopPropagation();
model.trigger('backgrid:edited', model, column, command);
return;
} }
/* /*

View File

@@ -472,21 +472,12 @@ define([
// If there is default arguments // If there is default arguments
//Below logic will assign default values to "Default value" column //Below logic will assign default values to "Default value" column
for (j = (myargname.length - 1); j >= 0; j--) { for (j = (myargname.length - 1); j >= 0; j--) {
if (debug_info['proargmodes'] == null) {
if (arg_cnt) { if (arg_cnt) {
arg_cnt = arg_cnt - 1; arg_cnt = arg_cnt - 1;
def_val_list[j] = default_args[arg_cnt]; def_val_list[j] = default_args[arg_cnt];
} else { } else {
def_val_list[j] = '<No default value>'; def_val_list[j] = '<No default value>';
} }
} else {
if (arg_cnt) {
arg_cnt = arg_cnt - 1;
def_val_list[j] = default_args[arg_cnt];
} else {
def_val_list[j] = '<No default value>';
}
}
} }
for (i = 0; i < argtype.length; i++) { for (i = 0; i < argtype.length; i++) {
@@ -923,22 +914,11 @@ define([
let node = pgBrowser.Nodes[item_data._type]; let node = pgBrowser.Nodes[item_data._type];
let treeInfo = node.getTreeNodeHierarchy.call(node, selected_item); let treeInfo = node.getTreeNodeHierarchy.call(node, selected_item);
let f_id;
if (item_data._type == 'function') {
f_id = item_data._id;
} else if (item_data._type == 'procedure') {
f_id = item_data._id;
} else if (item_data._type == 'edbfunc') {
f_id = item_data._id;
} else if (item_data._type == 'edbproc') {
f_id = item_data._id;
}
baseUrl = url_for('debugger.clear_arguments', { baseUrl = url_for('debugger.clear_arguments', {
'sid': treeInfo.server._id, 'sid': treeInfo.server._id,
'did': treeInfo.database._id, 'did': treeInfo.database._id,
'scid': treeInfo.schema._id, 'scid': treeInfo.schema._id,
'func_id': f_id, 'func_id': item_data._id,
}); });
} else { } else {
baseUrl = url_for('debugger.clear_arguments', { baseUrl = url_for('debugger.clear_arguments', {

View File

@@ -391,18 +391,7 @@ define([
if (res.data.result == null || res.data.result.length == 0) { if (res.data.result == null || res.data.result.length == 0) {
self.poll_result(trans_id); self.poll_result(trans_id);
} else { } else {
if (res.data.result[0].src != undefined || res.data.result[0].src != null) { if (!pgTools.DirectDebug.debug_type && !pgTools.DirectDebug.first_time_indirect_debug) {
pgTools.DirectDebug.polling_timeout_idle = false;
pgTools.DirectDebug.docker.finishLoading(50);
if (res.data.result[0].src != pgTools.DirectDebug.editor.getValue()) {
pgTools.DirectDebug.editor.setValue(res.data.result[0].src);
self.UpdateBreakpoint(trans_id);
}
self.setActiveLine(res.data.result[0].linenumber - 2);
// Update the stack, local variables and parameters information
self.GetStackInformation(trans_id);
} else if (!pgTools.DirectDebug.debug_type && !pgTools.DirectDebug.first_time_indirect_debug) {
pgTools.DirectDebug.docker.finishLoading(50); pgTools.DirectDebug.docker.finishLoading(50);
self.setActiveLine(-1); self.setActiveLine(-1);
self.clear_all_breakpoint(trans_id); self.clear_all_breakpoint(trans_id);

View File

@@ -238,14 +238,8 @@ export default class SchemaDiffUI {
generated_script = script_header + 'BEGIN;' + '\n' + self.model.get('diff_ddl') + '\n' + 'END;'; generated_script = script_header + 'BEGIN;' + '\n' + self.model.get('diff_ddl') + '\n' + 'END;';
} }
let preferences = pgWindow.pgAdmin.Browser.get_preferences_for_module('schema_diff');
if (preferences.schema_diff_new_browser_tab) {
pgWindow.pgAdmin.ddl_diff = generated_script; pgWindow.pgAdmin.ddl_diff = generated_script;
generateScript(server_data, pgWindow.pgAdmin.DataGrid); generateScript(server_data, pgWindow.pgAdmin.DataGrid);
} else {
pgWindow.pgAdmin.ddl_diff = generated_script;
generateScript(server_data, pgWindow.pgAdmin.DataGrid);
}
} }
$('#diff_fetching_data').find('.schema-diff-busy-text').text(''); $('#diff_fetching_data').find('.schema-diff-busy-text').text('');

View File

@@ -843,15 +843,10 @@ define([
saveUser: function(m) { saveUser: function(m) {
var d = m.toJSON(true); var d = m.toJSON(true);
if(m.isNew() && m.get('auth_source') == 'ldap' && if((m.isNew() && m.get('auth_source') == 'ldap' && (!m.get('username') || !m.get('auth_source') || !m.get('role')))
(!m.get('username') || !m.get('auth_source') || !m.get('role')) ) { || (m.isNew() && m.get('auth_source') == DEFAULT_AUTH_SOURCE && (!m.get('email') || !m.get('role') ||
return false; !m.get('newPassword') || !m.get('confirmPassword') || m.get('newPassword') != m.get('confirmPassword')))
} else if (m.isNew() && m.get('auth_source') == DEFAULT_AUTH_SOURCE && (!m.get('email') || !m.get('role') || || (!m.isNew() && m.get('newPassword') != m.get('confirmPassword'))) {
!m.get('newPassword') || !m.get('confirmPassword') ||
m.get('newPassword') != m.get('confirmPassword'))) {
// New user model is valid but partially filled so return without saving.
return false;
} else if (!m.isNew() && m.get('newPassword') != m.get('confirmPassword')) {
// For old user password change is in progress and user model is valid but admin has not added // For old user password change is in progress and user model is valid but admin has not added
// both the passwords so return without saving. // both the passwords so return without saving.
return false; return false;

View File

@@ -375,11 +375,8 @@ def cleanup_session_files():
iterate_session_files = False iterate_session_files = False
global LAST_CHECK_SESSION_FILES global LAST_CHECK_SESSION_FILES
if LAST_CHECK_SESSION_FILES is None: if LAST_CHECK_SESSION_FILES is None or \
iterate_session_files = True datetime.datetime.now() >= LAST_CHECK_SESSION_FILES + \
LAST_CHECK_SESSION_FILES = datetime.datetime.now()
else:
if datetime.datetime.now() >= LAST_CHECK_SESSION_FILES + \
datetime.timedelta(hours=config.CHECK_SESSION_FILES_INTERVAL): datetime.timedelta(hours=config.CHECK_SESSION_FILES_INTERVAL):
iterate_session_files = True iterate_session_files = True
LAST_CHECK_SESSION_FILES = datetime.datetime.now() LAST_CHECK_SESSION_FILES = datetime.datetime.now()

View File

@@ -791,12 +791,11 @@ class SQLAutoComplete(object):
'signature': self.signature_arg_style 'signature': self.signature_arg_style
}[usage] }[usage]
args = func.args() args = func.args()
if not template: if not template or (
return '()' usage == 'call' and (
elif usage == 'call' and len(args) < 2: len(args) < 2 or func.has_variadic())):
return '()'
elif usage == 'call' and func.has_variadic():
return '()' return '()'
multiline = usage == 'call' and len(args) > self.call_arg_oneliner_max multiline = usage == 'call' and len(args) > self.call_arg_oneliner_max
max_arg_len = max(len(a.name) for a in args) if multiline else 0 max_arg_len = max(len(a.name) for a in args) if multiline else 0
args = ( args = (