Skip to content
Wei-Cheng Yeh (IID) edited this page Jul 6, 2021 · 1 revision

Release Notes of Version 2.0.0

Features and fixes backported to v1.x

Changes which directly affect the UI

  • Key H and F1 now both open the help page of pmore/more
  • Now the key Del deletes the character on the cursor in the input fields
  • Invalid inputs or operations on input fields will now bell
  • Support on-the-fly terminal resizing detecting
  • Make the layout of vs_bar() consistent with vs_head()
  • Fix typoes and refine word usage in UI strings
  • Most UI elements now support widescreen display
  • Re-enable MyFavorite option in Ctrl-Z menu
  • The screenshot function in Ctrl-Z menu now supports widescreen
  • The screenshot function in Ctrl-Z menu is now enabled when pfterm is enabled
  • Add some F* and Esc-* key shortcuts from PttBBS for editor
  • The format of idle time is changed from mmmm to hh:mm
  • Now the guest who idles for too long will be kicked out
  • Now the idle alert will bell
  • Remove the useless V function of the user list UI
  • Now the client will disconnect right after the disconnection message displays
  • Now the client will perform the logout works before the logout message displays
  • The number of failed reposts or forwarding posts will now be reported
  • The key shortcut Ctrl-U of the editor now inputs the character ESC instead; please use Esc U to bring out the user list instead
  • Add key shortcuts Esc 1 - Esc 5 for pasting the text from 1-5th temporary buffer file in the editor

Fixes which directly affect the UI

  • Fix blog() generating misaligned log files, which makes the calculated average session duration incorrect
  • Use user mode M_ADMIN for system maintenance menu instead of M_XMENU for better description of the user status
  • Change the misleading description of user mode M_XMENU "網路連線選單" to "工具選單"
  • Fix MyFavorite status being displayed wrong
  • Fix reversed type sometimes not being turned off after drawing the input field when pfterm is enabled
  • Fix nested popupmenus not being redrawn when entered
  • Fix crashes when the user repost a gem item which the user has no read permission
  • Fix crashes due to writing to read-only program memory when calling getfield() in u_register()
  • Fix misusing KB instead of bytes as the data size unit in x_siteinfo()
  • Fix the issue that failed reposts and forwarding posts increase the personal post count
  • Fix all the title of the user ranks generated by topusr becoming %s
  • Fix corrupted display and crashes in the UI of the input tool of the editer, which is caused by buffer overflow
  • Fix the issue that rejected board changes cause the displayed name of the currently entered board become the name of the board to be changed to
  • Fix the issue that class_yank2() (the i function) is not able to list all the friend-only and hidden boards
  • Fix the issue that using class_yank() (the y function) or class_yank2() (the i function) causes the user to be kicked out of or to be not able to enter the board list when there are no corresponding boards
  • Fix the hottest board listing only the board 'SYSOP'; now it lists all hot boards
  • Fix the issue that an empty hottest board list prevents the user from entering the board category list

Other UI fixes

  • Use int instead of char to store the result of vkey()
  • Reassign special key values
  • Add support for function keys F1 - F12
  • Add support for the key combination Shift-Tab
  • maple/visio.c: Re-enable ansi_move(), and rename it to move_ansi() to be consistent with pfterm.
  • Make the parameters of maple/visio.c grayout() to be consistent with pfterm
  • so/adminutil.c: top(): Fix shell command top not working.
  • Remove function clrtohol()
  • Support special keys for more terminals
  • Support Ctrl/Meta/Shift key modifiers for special keys
  • Fix the connection overload message msg_no_desc of innbbsd being truncated
  • Fix the function HISfetch() being declared wrong in innbbsd/inntobbs.h

Fixes about pfterm

  • Fix the background for popupmenu_ans2() & pmsg2() not fading out when pfterm is disabled
  • Fix pmsg2() not using vmsg() to display the pausing message when the argument is NULL while pfterm is disabled
  • Fix: Macros STANDOUT and STANDEND expand to multiple statements when pfterm is disabled, which causes display issues in STEALTH_NOECHO mode of vget() on the "Current" version.
  • Fix pfterm misinterpreting the ANSI escape sequence ESC <ch> as ESC [ <ch> (e.g., ESC m was misinterpreted as ESC [ m)

Fixes for the password security

  • Refine the seeding of pseudorandom number generators
  • Improve the security of newly generated/encrypted passwords by using a cryptographically secure pseudorandom number generator (CSPRNG)
  • Fix a logical error which causes the user's the ID and plaintext password being mistaken as the user's origin of connection
  • Now the plaintext password input by the user will be wiped out after processed
  • Now the plaintext site private key for inter-site mails will be wiped out after processed
  • Fix: The user's plaintext password is stored in a global variable whenever the compile option CHAT_SECURE is enabled
  • Fix: The global variable storing the plaintext password cannot be used to login xchatd, because the variable is wiped out after verified.

Other fixes for the system security

  • Fix accessing uninitialized/garbage variable in 38 places
  • Fix writing uninitialized/garbage bytes to disk files in 3 places
  • Fix buffer overflows / out-of-bound accesses in 8 places
  • Fix unreachable memory leaks in 9 places
  • Fix memory corruptions in 4 places
  • Fix file resource leaks in 7 places
  • Fix invalid fclose()/close() calls in 25 places
  • Fix 30 misuses of open() return value and bugs/errors introduced by them
  • Fix some undefined behaviors
  • Fix the global buffer ipv4addr being overflowed by IPv4 addresses with 15 characters
  • Fix potential buffer overflow caused by wrong types of the arguments to format strings
  • Fix undefined behaviors caused by the input and output buffers for sprintf() overlapping each other
  • Minor security fixes

BRH fixes

  • brh_get(): Fix memcpy()ing unnecessary 3 time_ts.
  • brh_add(): Fix out-of-range writing when adding oldest read article while BRH is full.
  • brh_add(): Fix adding oldest read article always introducing new time tags.
  • brh_load(): Avoid memcpy()ing 0 or less bytes.
  • brh_get(): Fix using memcpy() to move data between overlapped ranges, which corrupts BRH sometimes.

Uncategorized fixes

  • Allow bin/account to be executed at 10-59 minutes after the hour every hour
  • Fix login count never being reset if bin/account is never executed at 1 am
  • scripts/checkusrDIR.sh: Fix 'run/NOUSRDIR.log' never being cleaned.
  • Fix base64encode tool yields wrong results
  • Fix checkemail mails to the same destination twice whenever any arguments are passed
  • Replace the hardcoded path /home/bbs with the macro BBSHOME
  • Fix: Accessing uninitialized variables for a while condition whenever the argument host of dns_open() is a IPv4 address, which causes halts and even crashes

Improvements about build and employment process

  • Define macro USE_* if M3_USE_* is defined
  • Scripts are now installed with bmake install
  • Add systemd unit files
  • Fix the library path of 32-bit glibc for building dynamic libraries on 64-bit OSs
  • Use Travis CI for Build Verification Test

Other fixes and improvements

  • Fix typoes and refine word usage in comments
  • Refine the name of some variables and struct members
  • Fix comments which conflict with the code
  • Eliminate K&R-style function pointer casts
  • Eliminate variable-length arrays
  • Fix invalid shebang in shell scripts
  • Fix shellcheck warnings for shell scripts
  • Eliminate most of -Wall warnings
  • Eliminate most of -Wwrite-strings warnings, caused by over 438 places of code
  • Fix incorrect indentation
  • Tweak the code layout
  • Other minor refactoring and bug fixes

Features and fixes for v2.0.0

Fixes which directly affects the UI

  • Support SHA-256-encrypted passwords
  • Support SHA-256 site signature for inter-site mail
  • Increase the maximum password length to 36 characters
  • Make the password fields invisible
  • Allow the user to choose between the old and new password encryption methods when setting/generating new passwords
  • Now the password field for POP3 authorization accepts up to 36 characters
  • Now the password field for POP3 authorization is invisible
  • Now the number of processors accounts for the seriousness of the heaviness of system load
  • Now the number of processors is displayed together with the system load
  • Make non-default options of yes/no questions lower-case
  • Remove the dash after the system load information on the login screen

Improvements of the UI of the command-line tools

  • Refine reports of invalid command-line usages of the tools
  • Fix out-of-bound accesses when the argument for poststat is a positive integer other than 1, 2, and 100
  • Fix users' song request point decreasing when the argument for addsong is negative
  • Fix the maximum online user count, the maximum registered user count, the maximum login count per hour, and the maximum login count per day can be set to negative by passing negative arguments to counter w
  • The tools which accept more than 2 arguments now allow parameter designation and omitting with the -? syntax

Other UI fixes and improvements

  • Site information: Always show all the modules
  • Add echo flags VGET_STRICT_DOECHO, VGET_STEALTH_NOECHO, PASSECHO, VGET_BREAKABLE, & NUMECHO for vget()
  • Make vget() convert the whole input string to lowercase if LCECHO is set
  • Site information: Show the version information of external libraries used by enabled modules.
  • Remove adminutil tools which invoke shell commands

Improvements about pfterm

  • Preliminary implement of the function vkey_is_typeahead(), which is used by pfterm and pmore, is now done
  • Update the comments and the references of pfterm
  • Add support for ANSI escape sequence ESC [ <n> d (move to <n>-th line) for pfterm
  • Add support for ANSI escape sequence ESC [ 27 (reverse off) for pfterm (ESC [ 7 either turns on or turns off the reverse attribute)

BBS-Lua support

Improvements

  • Introduce the bbslua module from PttBBS
  • Add configuration macros
  • Implement adapter macros and functions
  • Now the user permission will be checked before executing BBS-Lua
  • Improve the compatibility of key value handling of special keys
  • Add support for Shift-Tab
  • Implement Ctrl-C detection for bl_getdata()
  • Add HIDEECHO (32) flag for bl_getdata() for Maple3 to allow combining NOECHO effect with other echo flags
  • Replace deprecated bitlib library with BitOp http://bitop.luajit.org/
  • Support LuaJIT
  • Rework current BBS-Lua keyboard support implement for Maple3
  • Update BBS-Lua version to 0.119-DlPatch-1
  • Other minor refactoring

Fixes

  • Fix printing random string when aborting using Ctrl-C
  • getdata/getstr(): Fix crash when echo == 8 on PttBBS
  • getch()/kball(): Fix Esc-* keys being mistaken as Esc on PttBBS

BBS-Ruby support

Improvements

  • Introduce the bbsruby module from itszero/bbs-ruby
  • Do not load "empty.rb"
  • Make BBS-Ruby compatible with Ruby 1.9 - 2.2
  • Change the BBS-Ruby C API function name prefix from bbs_ to brb_
  • Refine the usage of row/line/y and column/x
  • Re-enable and fix interface version checking.
  • Improve exception handling and debugging
  • Make the line number of the code consistent with the post
  • Clear the screen before executing
  • Make the grammar of TOC tags laxer
  • Now the user permission will be checked before executing BBS-Ruby
  • Add configuration macros
  • Make BBS-Ruby able to be compiled on PttBBS
  • Draw nothing in the NOECHO echo mode of getdata() if possible
  • Allow aborting BBS-Ruby with Ctrl-C if possible
  • Other minor refactoring

Fixes

  • Fix memory leaks
  • Fix accessing uninitialized values
  • Fix Ruby interpreter randomly reporting parsing errors due to the parser getting garbage bytes
  • Work around the issue that rb_compile_string() + ruby_exec_node() do not work
  • Fix segmentation fault when BBS-Ruby encounter run-time errors
  • Fix all signal handlers being overriden permanently in run_ruby()
  • Work around the issue that class BBS and variables are never reset
  • Fix incorrect move() and moverel() due to missing parameter casts
  • Other minor fixes

WebSocket proxy support

  • bbsd now allows the connection data to be passed via unix sockets, which is compatible with the WebSocket proxy module used in PttBBS
  • Introduce the wsproxy module from PttBBS
  • wsproxy: Replace the custom method receiveatmost() made by patching, with the official OpenResty method receiveany().

Type safety improvements

  • Remove ignored top-level cvr-qualifiers and keyword register from function declarations
  • Make 14 static storage pointers point to const
  • Make 374 more function result and parameter pointers point to const
  • Make 26 more static storage pointers const
  • Make the elements of 90 more arrays const
  • Make 11 more point-to-string variables const

Improvements about build and employment process

  • Use -ggdb3 -O0 compiler flags for easier debugging
  • Avoid defining M3_USE_* or similar macros in non-configuration files
  • Add tests for libdao functions f_mv() and f_cp()
  • Refactor Makefiles
  • Eliminate unnecessary loading of .include for makefiles
  • Support disabling dynamic library loading

Other improvements

  • Move generic macros from include/bbs_script.h to include/cppdef.h
  • Refine code and fix minor over allocation for flexible array members
  • Introduce some useful macros for GCC attributes from PttBBS
  • Define some useful GCC attribute macros
  • Refine grammar and wording of README.md
  • Other minor refactoring
Clone this wiki locally