			drop : function(e, ui) {
				var dst     = $(this),
					targets = $.map(ui.helper.data('files')||[], function(h) { return h || null }),
					result  = [],
					dups    = [],
					faults  = [],
					isCopy  = ui.helper.hasClass('elfinder-drag-helper-plus'),
					c       = 'class',
					cnt, hash, i, h;
				
				if (ui.helper.data('namespace') !== self.namespace) {
					return false;
				}
				if (dst.hasClass(self.res(c, 'cwdfile'))) {
					hash = self.cwdId2Hash(dst.attr('id'));
				} else if (dst.hasClass(self.res(c, 'navdir'))) {
					hash = self.navId2Hash(dst.attr('id'));
				} else {
					hash = cwd;
				}

				cnt = targets.length;
				
				while (cnt--) {
					h = targets[cnt];
					// ignore drop into itself or in own location
					if (h != hash && files[h].phash != hash) {
						result.push(h);
					} else {
						((isCopy && h !== hash && files[hash].write)? dups : faults).push(h);
					}
				}
				
				if (faults.length) {
					return false;
				}
				
				ui.helper.data('droped', true);
				
				if (dups.length) {
					ui.helper.hide();
					self.exec('duplicate', dups);
				}
				
				if (result.length) {
					ui.helper.hide();
					self.clipboard(result, !isCopy);
					self.exec('paste', hash, void 0, hash).always(function(){
						self.trigger('unlockfiles', {files : targets});
					});
					self.trigger('drop', {files : targets});
				}
			}
The software constructs all or part of an SQL command using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended SQL command when it is sent to a downstream component.