Major new features are official support for Redis, additional crypto functions that enable U2F key support in 9.10.00 and newer, and features that will be required for the 9.12.00 API release.
Changelog:
Bugs Fixed
----------
23788: OpenSSL thread locking callback is called after all threads have been joined and cleanup has begun
24758: CompilerParser::Find_ScratchVariable_Ident can be susceptible to a buffer overflow
24759: Passing a negative value for the "-O" flag causes a segfault
24762: mvc fails to pass the verbose flag to the assembler
24817: The JSONDecoder should clear any existing data from the output parameter
26511: LOWER function leaks memory
26512: UPPER function leaks memory
26517: SQL_Stack::PopBool should use the string length, not the string size
26518: MivaSQL crashes when search condition does not contain RHS operators
26522: MivaSQL UNION should remove duplicates from individual result sets
26525: SQL_Bucket_Record does not delete the value popped off of the stack
26556: MvSMTP should clear the g.MvSMTP_Error variable on a successful connection
26572: PostgreSQL: Add prepared statement to cache after query is executed / view is closed
26602: Compiler: MvOPENVIEW should output a compiler error if the QUERY attribute is missing
26767: CommandLine_Warning_Flags has bad index boundary checks
26772: LocateDSOs should output an error when the .so/.DLL directory encounters an error
26841: UNIXReentrantFileManager::DirectoryListing should use readdir_r
26881: Generate SHA256SUMS of all distribution files and components
27000: VariableHash::LookupVariable_Fancy on present but uncreated variable causes a crash
27031: DefaultDatabaseVariable::Clone is cloning the wrong variable
27037: SpecialVariables values are not set to the parent's value in a multi-threaded environment
New Builtin Functions
---------------------
- file_set_time( path, location, modified )
Sets the file's modified time
Parameters:
- path - The path to the file
- location - Either script or data
- modified - time_t (seconds since 1-JAN-1970)
Return Value:
- 1 on success, 0 on failure
- crypto_next_error()
Gets the next crypto error
Parameters:
- None
Return Value:
- The appropriate crypto error
- crypto_clear_error()
Will clear out all crypto errors
Parameters:
- None
Return Value:
- Empty
- crypto_evp_sign( digestname, privkey, buffer, signature var )
Generates an RSA / ECDSA signature
Parameters:
- digestname - Hash algorithm name, such as "md5" or "sha256". Supported digest algorithms will vary between OpenSSL installations
- privkey - EVP PKEY structure reference
- buffer - The data to sign
- signature - The signed output signature
Return Value:
- 1 on success, 0 on failure
- crypto_evp_verify( digestname, pubkey, buffer, signature )
Verifies an RSA / ECDSA signature
Parameters:
- digestname - Hash algorithm name, such as "md5" or "sha256". Supported digest algorithms will vary between OpenSSL installations
- pubkey - EVP PKEY structure reference
- buffer - The data to verify
- signature - The signature to verify
Return Value:
- 1 on success, 0 on failure
- evp_pkey_load_pubkey_x509( x509 var, pkey var )
Loads a PKEY reference from an x509 public key reference
Parameters:
- x509 - Certificate reference returned from functions such as x509_load_mem
- pkey - Structure reference
Return Value:
- 1 on success, 0 on failure
Other
-----
- crypto_last_error
Previously if the crypto error originated from Miva Empresa, the returned error was always the same. If the crypto error was from OpenSSL
then it would be lost after calling the function. Modified to always return the last crypto error.
- trim / ltrim / rtrim
Will now trim whitespace from arrays and structures. Previously the functions would convert arrays and structures to serialized data and
then trim it. Arrays and structures are now iterated and all values within are trimmed appropriately.
- POST content type of "application/json" is now supported. The POSTed data will be parsed and stored in the s.json_data variable as a JSON
object. The raw POSTed data will populate the s.content_data variable.
- Added the FLAGS attribute to MvCALL / mvt:call. The only supported flag currently is "noparse" which will disable parsing of the returned
data. The data will populate the s.callvalue variable. This is ideal if you do not need to iterate HTML / XML elements.
- evp_pkey_load_mem now supports the DER and PEM formats.
- Added support for Redis. The use of the redis functions can be obtained by adding a system library with the code of "hiredis."
- The compiler now warns when text / HTML is present and will not be output in the current context.
Changelog:
Bugs Fixed
----------
23788: OpenSSL thread locking callback is called after all threads have been joined and cleanup has begun
24758: CompilerParser::Find_ScratchVariable_Ident can be susceptible to a buffer overflow
24759: Passing a negative value for the "-O" flag causes a segfault
24762: mvc fails to pass the verbose flag to the assembler
24817: The JSONDecoder should clear any existing data from the output parameter
26511: LOWER function leaks memory
26512: UPPER function leaks memory
26517: SQL_Stack::PopBool should use the string length, not the string size
26518: MivaSQL crashes when search condition does not contain RHS operators
26522: MivaSQL UNION should remove duplicates from individual result sets
26525: SQL_Bucket_Record does not delete the value popped off of the stack
26556: MvSMTP should clear the g.MvSMTP_Error variable on a successful connection
26572: PostgreSQL: Add prepared statement to cache after query is executed / view is closed
26602: Compiler: MvOPENVIEW should output a compiler error if the QUERY attribute is missing
26767: CommandLine_Warning_Flags has bad index boundary checks
26772: LocateDSOs should output an error when the .so/.DLL directory encounters an error
26841: UNIXReentrantFileManager::DirectoryListing should use readdir_r
26881: Generate SHA256SUMS of all distribution files and components
27000: VariableHash::LookupVariable_Fancy on present but uncreated variable causes a crash
27031: DefaultDatabaseVariable::Clone is cloning the wrong variable
27037: SpecialVariables values are not set to the parent's value in a multi-threaded environment
New Builtin Functions
---------------------
- file_set_time( path, location, modified )
Sets the file's modified time
Parameters:
- path - The path to the file
- location - Either script or data
- modified - time_t (seconds since 1-JAN-1970)
Return Value:
- 1 on success, 0 on failure
- crypto_next_error()
Gets the next crypto error
Parameters:
- None
Return Value:
- The appropriate crypto error
- crypto_clear_error()
Will clear out all crypto errors
Parameters:
- None
Return Value:
- Empty
- crypto_evp_sign( digestname, privkey, buffer, signature var )
Generates an RSA / ECDSA signature
Parameters:
- digestname - Hash algorithm name, such as "md5" or "sha256". Supported digest algorithms will vary between OpenSSL installations
- privkey - EVP PKEY structure reference
- buffer - The data to sign
- signature - The signed output signature
Return Value:
- 1 on success, 0 on failure
- crypto_evp_verify( digestname, pubkey, buffer, signature )
Verifies an RSA / ECDSA signature
Parameters:
- digestname - Hash algorithm name, such as "md5" or "sha256". Supported digest algorithms will vary between OpenSSL installations
- pubkey - EVP PKEY structure reference
- buffer - The data to verify
- signature - The signature to verify
Return Value:
- 1 on success, 0 on failure
- evp_pkey_load_pubkey_x509( x509 var, pkey var )
Loads a PKEY reference from an x509 public key reference
Parameters:
- x509 - Certificate reference returned from functions such as x509_load_mem
- pkey - Structure reference
Return Value:
- 1 on success, 0 on failure
Other
-----
- crypto_last_error
Previously if the crypto error originated from Miva Empresa, the returned error was always the same. If the crypto error was from OpenSSL
then it would be lost after calling the function. Modified to always return the last crypto error.
- trim / ltrim / rtrim
Will now trim whitespace from arrays and structures. Previously the functions would convert arrays and structures to serialized data and
then trim it. Arrays and structures are now iterated and all values within are trimmed appropriately.
- POST content type of "application/json" is now supported. The POSTed data will be parsed and stored in the s.json_data variable as a JSON
object. The raw POSTed data will populate the s.content_data variable.
- Added the FLAGS attribute to MvCALL / mvt:call. The only supported flag currently is "noparse" which will disable parsing of the returned
data. The data will populate the s.callvalue variable. This is ideal if you do not need to iterate HTML / XML elements.
- evp_pkey_load_mem now supports the DER and PEM formats.
- Added support for Redis. The use of the redis functions can be obtained by adding a system library with the code of "hiredis."
- The compiler now warns when text / HTML is present and will not be output in the current context.