    main.unsubscribeObjects = function (patterns) {
        if (!patterns) return;
        if (typeof patterns === 'object') {
            for (var s = 0; s < patterns.length; s++) {
                if (main.subscribesObjects[patterns[s]]) {
                    main.subscribesObjects[patterns[s]]--;
                }
                if (main.subscribesObjects[patterns[s]] === 0) {
                    main.socket.emit('unsubscribeObjects', patterns[s]);
                    delete main.subscribesObjects[patterns[s]];
                }
            }
        } else {
            if (main.subscribesObjects[patterns]) {
                main.subscribesObjects[patterns]--;
            }
            if (main.subscribesObjects[patterns] === 0) {
                main.socket.emit('unsubscribeObjects', patterns);
                delete main.subscribesObjects[patterns];
            }
        }
    };
The software uses external input to construct a pathname that is intended to identify a file or directory that is located underneath a restricted parent directory, but the software does not properly neutralize special elements within the pathname that can cause the pathname to resolve to a location that is outside of the restricted directory.