• src/sbbs3/userdat.c

    From Rob Swindell@VERT to Git commit to main/sbbs/master on Wed Apr 14 19:19:52 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/0b3804ff58b0611e544fb932
    Modified Files:
    src/sbbs3/userdat.c
    Log Message:
    Don't compare array against NULL

    Addresses CID 319116 and 319090

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Sun Apr 18 20:25:04 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/9c1594949415dda47210ad23
    Modified Files:
    src/sbbs3/userdat.c
    Log Message:
    Let's make that semfile just sound.mute

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Sun Apr 25 19:36:21 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/55d6d6b8c0c8e92522a45c42
    Modified Files:
    src/sbbs3/userdat.c
    Log Message:
    Get rid of an unnecessary strcat() call

    CID 33567

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Mon Sep 20 23:33:38 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/e6bc098025fb9ffb263f8ce4
    Modified Files:
    src/sbbs3/userdat.c
    Log Message:
    Ignore trailing non-alpha-numeric characters in matchusername()

    A name ending in a symbol (e.g. "Erich B.") would cause problems with this matching logic.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Thu Jan 27 22:49:50 2022
    https://gitlab.synchro.net/main/sbbs/-/commit/fc3addb6b31e44b593986432
    Modified Files:
    src/sbbs3/userdat.c
    Log Message:
    Use new 'vdir' elements in getdir_from_vpath()

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Thu Feb 24 12:42:58 2022
    https://gitlab.synchro.net/main/sbbs/-/commit/b1bb5630000e4065a9377f1b
    Modified Files:
    src/sbbs3/userdat.c
    Log Message:
    Handle filelength() possibly returning negative value

    CID 349724

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Tue Mar 1 20:30:39 2022
    https://gitlab.synchro.net/main/sbbs/-/commit/d43068225eab3fd62b66f1b2
    Modified Files:
    src/sbbs3/userdat.c
    Log Message:
    Address Coverity-scan reported issues

    Could use more long->off_t conversions, but this is a start.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Tue Mar 1 22:43:08 2022
    https://gitlab.synchro.net/main/sbbs/-/commit/169c6dcc8956ff86294071d7
    Modified Files:
    src/sbbs3/userdat.c
    Log Message:
    Added NULL argument checking

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Tue Mar 29 01:16:22 2022
    https://gitlab.synchro.net/main/sbbs/-/commit/40eec7fa665daee9c365e43f
    Modified Files:
    src/sbbs3/userdat.c
    Log Message:
    Posts from QWKnet users don't count as "posts" for local stats

    Might add some other statistic for these relayed posts at some point.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Mon Apr 25 14:21:49 2022
    https://gitlab.synchro.net/main/sbbs/-/commit/14940b8a7f261cb137b69035
    Modified Files:
    src/sbbs3/userdat.c
    Log Message:
    Fix possible underflow conditions in gettimeleft()

    If a non-'T' exempt user had already used more time today than their security level allows, their timeleft would be computed as a negative value due to integer underflow. Since the return value of this function is assigned to a ulong (timeleft), this becomes a large positive number. Cap the floor of the computed time left at 0.

    Also fix the potential for underflow that could occur if the system clock changes while a user is online and 'now' becomes greater than 'starttime'.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Thu Aug 11 12:21:54 2022
    https://gitlab.synchro.net/main/sbbs/-/commit/8ad5e191568032ec2d91c79f
    Modified Files:
    src/sbbs3/userdat.c
    Log Message:
    matchuser() now always returns 0 when passed an empty 'name'

    Also, don't match against deleted (blank) usernames in name.dat
    (e.g. when 'name' value consists of a single ETX character).

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Sat Jan 21 19:51:15 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/6c0e423a38920f64abfb7013
    Modified Files:
    src/sbbs3/userdat.c
    Log Message:
    Don't truncate a user's record if the default download protocol or gender are '\0'

    A blank download protocol field in a user.dat, when parsed, sets the 'prot' field
    of user_t to 0. When writing the record back to the user.dat, this would prematurely
    truncate all other fields off the user record (since strings in C are NUL terminated
    and we're using sprintf() to format the record and %c specifier for that field).

    The fix is to write a ' ' character instead of '\0' if the user_t.prot is '\0'. As part of this fix, I'm writing a '?' if a user_t.sex is '\0' (not sure if this
    is actually possible, but just as insurance). Those are the only 2 single-character
    user properties/fields today.

    Bug reported/debugged by Al of The Rusty Mailbox (1:153/757.2) - thank you!

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (in GitKraken)@VERT to Git commit to main/sbbs/master on Thu Mar 2 18:56:50 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/14125aa4b0aa0bf027f77361
    Modified Files:
    src/sbbs3/userdat.c
    Log Message:
    The NoAccess* text.dat strings are not appropriate 'reason' codes

    These text.dat strings require an argument (and normally used with the NOACCESS @-code which uses the noaccess_str and noaccess_val member variables), so not appropriate to use as a reason code here. Use more generic (no argument) text.dat item numbers instead.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (in GitKraken)@VERT to Git commit to main/sbbs/master on Fri Mar 10 19:59:26 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/edc931be6282acafdf043532
    Modified Files:
    src/sbbs3/userdat.c
    Log Message:
    More strict login-by-user-number support (parsing logic)

    Before now, if the sysop enabled login-by-user-number and the specified login ID *started* with a decimal digit, it'd be treated as a user number and converted to a 32-bit integer. This could result in weird stuff, like this error I got today:
    SMTP ... !ERROR -2 getting data on user (7000401005.gc7gg@synchro.net)

    7,000,401,005 is clearly greater than the number of users in my user base
    on Vert, but since 7B is > 2.1B (0x7fffffff), the number would be parsed as
    a *negative* integer value and thus less than the total number of users in my userbase.

    An obvious solution would be to just turn of login-by-user-number, and for
    most systems, I suggest doing that (a system is less secure with it enabled).

    However, I want to leave the option for sysops (at least for now) and don't want this weird behavior so, a login by user number now requires that the entire login ID is just decimal numbers, nothing else, and the number is
    parsed as an unsigned integer. So yes, roll-over can happen for very high numbers (>4.2B), but in no instance will the number be parsed as negative and thus lead to an invalid user record look-up attempt.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Mon Apr 3 14:07:29 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/e0979e270d947bc8a9e64e70
    Modified Files:
    src/sbbs3/userdat.c
    Log Message:
    Fix GCC 9.4.0 warning reported by Nelgin

    warning: format not a string literal and no format arguments

    Weird this warning is happening for me with GCC 12.2 (debug or release build)

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Windows)@VERT to Git commit to main/sbbs/master on Mon May 8 18:07:50 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/c1d6e2c764781b0400578600
    Modified Files:
    src/sbbs3/userdat.c
    Log Message:
    The "user" directory is special: you don't need "access" to download from it.

    When sending a user-to-user file transfer, SBBS (since v3.19) will check that the file recipient will be able to download it (e.g. doesn't have restrictions preventing it) and this was failing for most (non-sysop) recipient users since they wouldn't normally meet the "access restrictions" of the user directory
    (by design).

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Thu Aug 22 19:54:56 2024
    https://gitlab.synchro.net/main/sbbs/-/commit/69fc70ab9e59914f5bfceb9f
    Modified Files:
    src/sbbs3/userdat.c
    Log Message:
    Extend (and back-off) the user.tab record lock attempts

    I'v been getting errors locking user.tab (for read) for a while (over samba), so hopefully this helps. The lockuserdat() total timeout duration extends from about 5 seconds to about 45 seconds (with an incremental back-off).

    Implement the same lock-retry logic/limit in putuserdat().

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on ChromeOS)@VERT to Git commit to main/sbbs/master on Sat Sep 14 18:48:08 2024
    https://gitlab.synchro.net/main/sbbs/-/commit/3de5f432ff45b91c838f28c8
    Modified Files:
    src/sbbs3/userdat.c
    Log Message:
    Delete data/file/*.out directory for new user (if exists)

    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.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Windows 11)@VERT to Git commit to main/sbbs/master on Sat Sep 21 13:08:41 2024
    https://gitlab.synchro.net/main/sbbs/-/commit/d7ed70e42df440ef47895b65
    Modified Files:
    src/sbbs3/userdat.c
    Log Message:
    user_downloaded_file() now return false upon statistics update failure

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Windows 11)@VERT to Git commit to main/sbbs/master on Fri Nov 1 23:46:33 2024
    https://gitlab.synchro.net/main/sbbs/-/commit/0a1265a00a2f193d1d977577
    Modified Files:
    src/sbbs3/userdat.c
    Log Message:
    strListFastDelete() now takes a count argument

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Windows 11)@VERT to Git commit to main/sbbs/master on Sun Nov 3 17:09:50 2024
    https://gitlab.synchro.net/main/sbbs/-/commit/c0c3c3ae007cc6f90469d3e0
    Modified Files:
    src/sbbs3/userdat.c
    Log Message:
    Check return value of seekuserdat() in putuserdat() and return failure

    ... trying to get to bottom of user.tab corruption reported in issue #797.

    Also, don't need to seek in lockuserdat() since we always call seekuserdat() first.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Windows 11)@VERT to Git commit to main/sbbs/master on Sun Nov 3 19:33:11 2024
    https://gitlab.synchro.net/main/sbbs/-/commit/5adf169677b1dee1819f18ca
    Modified Files:
    src/sbbs3/userdat.c
    Log Message:
    putuserdat() no longer calls dirtyuserdat() if the write/update failed

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Windows 11)@VERT to Git commit to main/sbbs/master on Tue Nov 12 21:15:44 2024
    https://gitlab.synchro.net/main/sbbs/-/commit/690bb56e025804cf73cfebbf
    Modified Files:
    src/sbbs3/userdat.c
    Log Message:
    A file descriptor of 0 is technically valid (though normally, STDIN)

    Likely fix for CID 514647

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Windows 11)@VERT to Git commit to main/sbbs/master on Sat Nov 16 20:08:50 2024
    https://gitlab.synchro.net/main/sbbs/-/commit/6b5a54d3bf6def6cf0694cd5
    Modified Files:
    src/sbbs3/userdat.c
    Log Message:
    Add description comment for find_login_id()

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net