- Sep 18, 2024
-
-
Rob Swindell authored
fclose() returns 0 on success.
-
- Sep 17, 2024
-
-
Rob Swindell authored
DDFileLister: Fix for replacing cursor-right codes to allow finding & replacing all of them in a string See merge request !461
-
Eric Oulashin authored
DDFileLister: Fix for replacing cursor-right codes to allow finding & replacing all of them in a string
-
Rob Swindell authored
-
Rob Swindell authored
The terminating NUL is actually part of the index record, but with file corruption, it's technically possible the NUL could be missing. Fixes CID 509552 Use strnicmp() insted of stricmp() in smb_removefile() Fixes CID 509551
-
Rob Swindell authored
The terminating NUL is actually part of the index record, but with file corruption, it's technically possible the NUL could be missing. Fixes CID 509554
-
Rob Swindell authored
Multiple directory searching functions wouldn't terminate on Ctrl-C
-
Rob Swindell authored
If the user didn't supply a wildcard, only a single file (the first file matching the liberal file pattern) would ever be listed in the file listing/searches, even when multiple files in the directory matched the liberal file matching pattern. This is not a new bug.
-
Rob Swindell authored
Commit 3a3c889b (2 years ago now) changed loadfiles() to use liberal file matching (e.g. "syncterm.exe" matched both "syncterm.exe" and "syncterm_v1.2b.exe"). This could produce surprising results when doing file list querieis/operations with the FileBase methods via JS (e.g. jsexec utils) and (now that I look at it), the FTP server too. So we should not have been doing liberal file matching *everywhere* loadfiles is used, just where it was a usability issue (due to displayed filenames being truncated to 12 chars for <=80 column terminals). Now solved by add/use of new liberal_filepattern() function only in the built-in file listing methods: sbbs_t::listfiles() and sbbs_t::listfileinfo(). Note: Custom JS file searching/listing scripts may now need their own work-arounds for this usability issue, if they have it.
-
Rob Swindell authored
Clarify that this is the method to use to rename a file.
-
- Sep 16, 2024
-
-
Rob Swindell authored
Since sorting works on the file index record date-time (date/time added) it was confusing to display dates that didn't always match the sort order.
-
Rob Swindell authored
Should fix issue #790
-
Rob Swindell authored
If you want to "touch" a file in the filebase (so it appears a new again) this is the script to use to do that.
-
Rob Swindell authored
-
Rob Swindell authored
DDFileLister: When displaying a file description, remove/replace cursor movement characters, which can corrupt the display See merge request !460
-
DDFileLister: When displaying a file description, remove/replace cursor movement characters, which can corrupt the display
-
- Sep 15, 2024
-
-
Rob Swindell authored
emailfiles.js puts files here that the user requested to download "via email" and might not have been successfully delivered and deleted. So clean-up.
-
Rob Swindell authored
to force SBBSecho to create a .req file (in FLO-mode), rather than send as netmail. For Keyop
-
- Sep 14, 2024
-
-
Rob Swindell authored
... otherwise, we'll erase the file's extended description or auxdata, if it has any.
-
Rob Swindell authored
Nelgin reported a weird error with a failed very large allocation for the base/code argument to the FileBase constructor. There's no good reason these strings were heap-allocated in the first place, so just change to use a stack allocated variable instead. I don't know why this would fix anything, but at least there's one less heap allocation and potential for memory leak here. Fix 2 bugs in js_update_file(): 1. missing parenthesis (really?!? Caught by Coverity - sigh) in last commmit caused attempt/failure/error to remove file after making any updates. The removing is only supposed to happen when its necessary to remove and re-add the file to the filebase (e.g. updating extended description or auxdata). 2. Wrong filename used in 'removing' exception string.
-
Rob Swindell authored
This fixes a filebase corruption issue that could be triggered by using FileBase.update() to rename a file while also changing the file's auxdata or extended description: you can't remove a file header that has the new filename (in the file_t.name field), cause it doesn't exist yet. So we needed an SMBLIB API function to pass the (original) filename instead. Much like the filedat.c removefile() function, but without the SMB opening/closing feature.
-
Rob Swindell authored
FileBase.update() will now throw an exception if attempting to rename a file to a filename that already exists in the filebase index. Prior to this change, one could (via JS methods) rename a file in the base to create a duplicate filename which would corrupt the base (one index entry and two header records for the same filename).
-
Rob Swindell authored
-
Rob Swindell authored
This will help to determine cause of any file update (e.g. rename) failures, as reported by Nelgin.
-
Rob Swindell authored
I was able to corrupt a filebase using fileman.js, renaming a file (the filename in the index as viewed with 'smbutil x' did not match the filename listed with 'smbutil l') - yet, chksmb reported no errors with the filebase. Now chksmb will detect that type of corruption.
-
Rob Swindell authored
chksmb needed this to perform filename checks (index against headers).
-
Rob Swindell authored
This served exactly no purpose (since the idxrec_t existed at the same offset in both parts of the union). So this was just some weird artifact from the new filebase development.
-
Rob Swindell authored
Increasing size of mode[] element by 2 bytes eliminated these GCC warnings that seem like false-positives to me: sbbs.h:194:48: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 194 | (ret)[JSSTSpos]=(char)JSSTSstrval[JSSTSpos]; \ | ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~ js_file.c:225:25: note: in expansion of macro ‘JSSTRING_TO_STRBUF’ 225 | JSSTRING_TO_STRBUF(cx, str, p->mode, sizeof(p->mode), NULL); | ^~~~~~~~~~~~~~~~~~ js_file.c:42:17: note: at offset 5 into destination object ‘mode’ of size 5 42 | char mode[5]; | ^~~~ Similar use of JSSTRING_TO_STRBUF in other files (js_console.cpp, js_archive.c) (with larger target buffers) does not trigger the same warnings.
-
Rob Swindell authored
DD file lister: Check for null when getting extended metadata from the DB (possibly caused by corruption). Also, allow changing the filename when editing file info/metadata. See merge request !459
-
DD file lister: Check for null when getting extended metadata from the DB (possibly caused by corruption). Also, allow changing the filename when editing file info/metadata.
-
- Sep 13, 2024
-
-
Rob Swindell authored
Ctrl-A - Select All Ctrl-F - Filter IP address DEL - Close Socket Also, use Begin/EndUpdate() calls to batch updates to the ListView in Timer tick (no visible difference, but it's the right thing to do). I don't know why C++Builder increased the TextHeight value of this form from 13 to 15, but doesn't seem to really matter (or at least, I couldn't tell).
-
Rob Swindell authored
I don't know why this was set so wide (10 pixels), but that did help to easily see that it was being placed in the wrong spot in the form (between the tool button bar and the top panel). But we don't need it to be that thick. 1 pixel is still enough to be able to grab it with the mouse and resize the top/bottom panels.
-
Rob Swindell authored
For who knows how long now, the horizontal splitter that allows the sysop to control the size of the top 2 panels (server forms), was displayed above the top panel, not between the top and bottom panel, thus making the panel heights not controllable. Weird. Change the order of making the controls visible to insure that the splitter is displayed below the top panel and on top of the bottom panel. Also (non-functional changes): Remove redunant mutex from client_on() - makes no difference. Use try/catch in client_on() to try to catch VCL exceptions - doesn't catch the "invalid index" error popups that we see on occasion. <shrug>
-
Rob Swindell authored
... bug introduced in commit 29a35642. strListMerge() doesn't realloc the strings in the list, so we don't want to free the strings in this list here. This is likely the cause of the crash Keyop eluded to in #synchronet.
-
- Sep 12, 2024
-
-
Rob Swindell authored
... and log a debug-level log message when doing so. The current input/receive timeout duration (5 minutes) might be a bit long to leave a message base open (though, there's no known issue with doing so). For example, when users read message bases using the terminal server, they can sit for much longer than 5 minutes reading an open message base.
-
Rob Swindell authored
As Nelgin pointed out, the nntpservice can leave a message bases open while a client is idle. Normally, an inactive client would be disconnected after 5 minutes of inactivity, so that wouldn't be much of an issue. However, if authenticated as a user with the H-exemption, no auto-disconnection after input timeout would happen. So let's close any open message base for good measure. The input/receive timeout probably should be configurable and lowered to a smaller duration (one minute?). I'll leave that for another commit.
-
Rob Swindell authored
Reported by Keyop (upon being auto-disconnected overnight): !ERROR 9 (Bad file descriptor) in data_ovl.cpp line 47 (putmsgptrs) writing "message pointers" access=0 Unfortunately, the way putmsgptrs() was written, we couldn't tell if this was an open (data/user/*.subs file) issue or a writing issue. So create putmsgptrs_fp() and use that from sbbs_t::putmsgptrs(), so we can log a different error (with more accurate details) if it's a file-open failure versues a file-write failure.
-
Rob Swindell authored
Fix #782 - websocketservice.js garbles input on Banana Pi running Armbian Closes #782 See merge request !458
-
-
Rob Swindell authored
The "from_ip" header field of QWK messages is checked against blocked IP addresses, but was only checking against IP addresses from ip.can, not any addresses listed in ip-silent.can. These 2 list files are now merged together for the purposes of filtering during QWK/REP packet import.
-