Miva Empresa 5.20 Release Notes
Bugs Fixed
7264: Builtins: archive: xml_parse cannot handle empty tag closure /> without leading whitespace
10930: Builtins: archive: xml_parse does not handle HTML/SGML comments without at least one space after the opening "<!--"
12119: Builtins: archive: xml_parse: Content containing an xml processing instruction includes the text "?xmlxml" in the value attribute of the toplevel member
11565: Builtins: system: miva_array_sort copies array elements
5593: Builtins: template: Expression compiler does not catch invalid expressions, resulting in Stack underflows at template runtime
5800: Builtins: template: Feature Request: mvt:break and mvt:continue for foreach loops
10677: Builtins: template: Add mvt:whilestop and mvt:whilecontinue tags
11629: Builtins: template: Mvt:eval doesn't have a way to escape quotation marks.
11501: Compiler: MvEVAL within MvREFERENCEARRAY causes a Runtime error
11566: Compiler: Cannot MvINCLUDE an empty file
11738: Compiler: Compiler has no mechanism to restrict the number of files it opens
11739: Compiler: MvINCLUDE "cannot open file" error messages don't include the underlying filesystem error text
11847: Compiler: Inconsistency in allowed variable names
12771: Compiler: MvDO with too many open square brackets gives unfriendly error
12978: Compiler: Compiler generates no output when a file contains nested inline MvDOs
14636: Compiler: Cannot compile an empty file
14652: Compiler: Compiler does not consistently output unrecognized function error messages
14678: Compiler: Missing parentheses errors in inline MvDO expressions are reported differently than in normal functions
11990: IIS Integration: ISAPI VM leaks memory in the length of the HTTP_COOKIE environment variable when log cookie is configure
11991: IIS Integration: ISAPI VM leaks memory when errors occur during processing of POSTed data
10816: Miva Mia: s.arg1 is only set when query parameters are present
12137: MivaSQL: Internal server error returned when Mivasql can't handle a sql between statement.
14666: MivaSQL: Missing comma in SELECT list results in output columns silently being ignored
4948: MVM UNIX CGI: CGIApplication opens the initial script file multiple times
6913: MVM Win32: s.dyn_tm_usec is milliseconds on Win32 systems, rather than microseconds
6957: MySQL Connector: recno is incorrect when a row contains BLOB data over 4096 bytes
6378: Virtual Machine: Dictionary growth can invalidate stack entries, leading to a crash
10333: Virtual Machine: Non-fatal MvDO_Errors sometimes cause a fatal "stack underflow" error
10890: Virtual Machine: Multiline SMTP greeting leads to out of sync conversation with remote server
11276: Virtual Machine: Multiple Content-Length headers when miva_output_header() is used to output an explicit value
11337: Virtual Machine: MvCALL does not support SNI
11628: Virtual Machine: Engine does not properly validate certificate host names containing embedded nulls
11994: Virtual Machine: Errors which occur when loading or validating the configuration can cause a VM crash
12027: Virtual Machine: CRYPT operator reads uninitialized memory and potentially embeds ASCII nulls in its output when the right operand is shorter than 2 characters
12248: Virtual Machine: CRYPT implementation is not thread safe
12644: Virtual Machine: CGI VM should more aggressively capture output write errors
12776: Virtual Machine: MvDO into bad file within an ELSEIF EXPR and incorrect output errors occur
12972: Virtual Machine: NULL byte injection in file upload
13602: Virtual Machine: MvCALL TYPE=RAW truncates binary data at the first NULL byte
14359: Virtual Machine: Certificate hostname matching does not properly handle IDNA prefixes
14543: Virtual Machine: CGI VM does not populate s.apitype unless the SERVER_NAME environment variable is present
14621: Virtual Machine: Dictionary entries are not validated for invalid offsets and sizes
10016: Virtual Machine Installation: Readme.txt contains a typo and is missing instructions for 3.x installs
New Features
· MvCALL now uses HTTP/1.1 for requests and supports responses returned with chunked Transfer-Encoding.
· SNI (Server Name Indication) is now supported for SSL/TLS connections. New configuration option MvCONFIG_SSL_SNI (environment) or "usesni" (3.x) controls whether the TLS hostname extension is set, and may contain one of the following values:
o auto: (default) SNI is enabled for OpenSSL 1.x and newer, disabled for OpenSSL 0.9.x and older (due to bugs in the older implementations)
o 0: SNI is disabled for all OpenSSL versions
o 1: SNI is enabled for all OpenSSL versions
MivaSQL Changes
· A new function, LENGTH( field ) may now be used in MivaSQL queries. The function returns the length, in bytes, of the value passed to it.
· MivaSQL now supports BETWEEN x AND y in SELECT queries.
StoreMorph Changes
· Quotation marks in StoreMorph expression constants may now be escaped with a backslash. Example: <mvt:eval expr="'<product count=\"80\">'" />
· New StoreMorph tags <mvt:foreachcontinue />, <mvt:foreachstop />, <mvt:whilecontinue /> and <mvt:whilestop /> allow greater control of foreach and while loops.
New API Functions
char *mvVariable_Value_NS( mvVariable variable, int *length )
Returns a string containing the value of "variable", with internal ASCII NULLs removed. *length receives the new length of the string. The return value is NULL terminated.
mvHTTPResponse mvNetwork_HTTP_Request( mvProgram program, const char *method, const char *url, double http_version, const char *content, const char *contenttype, int contentlength )
Makes an HTTP request using the protocol version specified by "http_version". The remaining parameters are identical to mvNetwork_Open_URL. Returns an mvHTTPResponse object, or NULL on failure.
int mvHTTPResponse_Status_Code( mvHTTPResponse response )
Returns the numeric HTTP response code of a response returned by mvNetwork_HTTP_Request.
int mvHTTPResponse_Content_Length( mvHTTPResponse response )
Returns the value of the Content-Length response header (if specified by the server).
int mvHTTPResponse_Read( mvHTTPResponse response, char *buffer, int size )
Reads "size" bytes from "response", storing the result in "buffer". Returns the number of bytes read, or -1 on error.
void mvHTTPResponse_Close( mvHTTPResponse response )
Closes an mvHTTPResponse and frees all associated memory.
const char *mvHTTPResponse_Error( mvProgram program, mvHTTPResponse response )
Returns a textual description of an error returned by mvHTTPResponse_Read.
Bugs Fixed
7264: Builtins: archive: xml_parse cannot handle empty tag closure /> without leading whitespace
10930: Builtins: archive: xml_parse does not handle HTML/SGML comments without at least one space after the opening "<!--"
12119: Builtins: archive: xml_parse: Content containing an xml processing instruction includes the text "?xmlxml" in the value attribute of the toplevel member
11565: Builtins: system: miva_array_sort copies array elements
5593: Builtins: template: Expression compiler does not catch invalid expressions, resulting in Stack underflows at template runtime
5800: Builtins: template: Feature Request: mvt:break and mvt:continue for foreach loops
10677: Builtins: template: Add mvt:whilestop and mvt:whilecontinue tags
11629: Builtins: template: Mvt:eval doesn't have a way to escape quotation marks.
11501: Compiler: MvEVAL within MvREFERENCEARRAY causes a Runtime error
11566: Compiler: Cannot MvINCLUDE an empty file
11738: Compiler: Compiler has no mechanism to restrict the number of files it opens
11739: Compiler: MvINCLUDE "cannot open file" error messages don't include the underlying filesystem error text
11847: Compiler: Inconsistency in allowed variable names
12771: Compiler: MvDO with too many open square brackets gives unfriendly error
12978: Compiler: Compiler generates no output when a file contains nested inline MvDOs
14636: Compiler: Cannot compile an empty file
14652: Compiler: Compiler does not consistently output unrecognized function error messages
14678: Compiler: Missing parentheses errors in inline MvDO expressions are reported differently than in normal functions
11990: IIS Integration: ISAPI VM leaks memory in the length of the HTTP_COOKIE environment variable when log cookie is configure
11991: IIS Integration: ISAPI VM leaks memory when errors occur during processing of POSTed data
10816: Miva Mia: s.arg1 is only set when query parameters are present
12137: MivaSQL: Internal server error returned when Mivasql can't handle a sql between statement.
14666: MivaSQL: Missing comma in SELECT list results in output columns silently being ignored
4948: MVM UNIX CGI: CGIApplication opens the initial script file multiple times
6913: MVM Win32: s.dyn_tm_usec is milliseconds on Win32 systems, rather than microseconds
6957: MySQL Connector: recno is incorrect when a row contains BLOB data over 4096 bytes
6378: Virtual Machine: Dictionary growth can invalidate stack entries, leading to a crash
10333: Virtual Machine: Non-fatal MvDO_Errors sometimes cause a fatal "stack underflow" error
10890: Virtual Machine: Multiline SMTP greeting leads to out of sync conversation with remote server
11276: Virtual Machine: Multiple Content-Length headers when miva_output_header() is used to output an explicit value
11337: Virtual Machine: MvCALL does not support SNI
11628: Virtual Machine: Engine does not properly validate certificate host names containing embedded nulls
11994: Virtual Machine: Errors which occur when loading or validating the configuration can cause a VM crash
12027: Virtual Machine: CRYPT operator reads uninitialized memory and potentially embeds ASCII nulls in its output when the right operand is shorter than 2 characters
12248: Virtual Machine: CRYPT implementation is not thread safe
12644: Virtual Machine: CGI VM should more aggressively capture output write errors
12776: Virtual Machine: MvDO into bad file within an ELSEIF EXPR and incorrect output errors occur
12972: Virtual Machine: NULL byte injection in file upload
13602: Virtual Machine: MvCALL TYPE=RAW truncates binary data at the first NULL byte
14359: Virtual Machine: Certificate hostname matching does not properly handle IDNA prefixes
14543: Virtual Machine: CGI VM does not populate s.apitype unless the SERVER_NAME environment variable is present
14621: Virtual Machine: Dictionary entries are not validated for invalid offsets and sizes
10016: Virtual Machine Installation: Readme.txt contains a typo and is missing instructions for 3.x installs
New Features
· MvCALL now uses HTTP/1.1 for requests and supports responses returned with chunked Transfer-Encoding.
· SNI (Server Name Indication) is now supported for SSL/TLS connections. New configuration option MvCONFIG_SSL_SNI (environment) or "usesni" (3.x) controls whether the TLS hostname extension is set, and may contain one of the following values:
o auto: (default) SNI is enabled for OpenSSL 1.x and newer, disabled for OpenSSL 0.9.x and older (due to bugs in the older implementations)
o 0: SNI is disabled for all OpenSSL versions
o 1: SNI is enabled for all OpenSSL versions
MivaSQL Changes
· A new function, LENGTH( field ) may now be used in MivaSQL queries. The function returns the length, in bytes, of the value passed to it.
· MivaSQL now supports BETWEEN x AND y in SELECT queries.
StoreMorph Changes
· Quotation marks in StoreMorph expression constants may now be escaped with a backslash. Example: <mvt:eval expr="'<product count=\"80\">'" />
· New StoreMorph tags <mvt:foreachcontinue />, <mvt:foreachstop />, <mvt:whilecontinue /> and <mvt:whilestop /> allow greater control of foreach and while loops.
New API Functions
char *mvVariable_Value_NS( mvVariable variable, int *length )
Returns a string containing the value of "variable", with internal ASCII NULLs removed. *length receives the new length of the string. The return value is NULL terminated.
mvHTTPResponse mvNetwork_HTTP_Request( mvProgram program, const char *method, const char *url, double http_version, const char *content, const char *contenttype, int contentlength )
Makes an HTTP request using the protocol version specified by "http_version". The remaining parameters are identical to mvNetwork_Open_URL. Returns an mvHTTPResponse object, or NULL on failure.
int mvHTTPResponse_Status_Code( mvHTTPResponse response )
Returns the numeric HTTP response code of a response returned by mvNetwork_HTTP_Request.
int mvHTTPResponse_Content_Length( mvHTTPResponse response )
Returns the value of the Content-Length response header (if specified by the server).
int mvHTTPResponse_Read( mvHTTPResponse response, char *buffer, int size )
Reads "size" bytes from "response", storing the result in "buffer". Returns the number of bytes read, or -1 on error.
void mvHTTPResponse_Close( mvHTTPResponse response )
Closes an mvHTTPResponse and frees all associated memory.
const char *mvHTTPResponse_Error( mvProgram program, mvHTTPResponse response )
Returns a textual description of an error returned by mvHTTPResponse_Read.
Comment