makssent opened a new pull request, #40100:
URL: https://github.com/apache/shardingsphere/pull/40100

   Changes proposed in this pull request:
     - `FirebirdGetBlobSegmentCommandExecutor` checks the BLOB handle via 
`FirebirdBlobHandleGenerator.isAllocated` and throws 
`InvalidSegstrHandleException` before reading when the handle is not allocated 
on the connection.
     - For an unknown, closed or released handle the client receives 
`op_response` with `isc_bad_segstr_handle` instead of the end of BLOB response 
(object 2) and an empty BLOB.
     - Responses for handles allocated on the connection do not change.
   
   Verification:
   The same protocol packets were executed directly against a real database and 
through the proxy, and the results were compared.
   
   * Server: Firebird 5.0
   * Clients: Jaybird 6.0.6
   
     Before the fix:
   
     | Packet | Proxy | Server | Match |
     |---|---|---|---|
     | `op_get_segment`: read BLOB handle `0x7FFF` that was never opened | 
object 2 (end of BLOB), no data, success | object 0, no data, error 335544328 
`isc_bad_segstr_handle` "invalid BLOB handle" | no |
   
     After the fix:
   
     | Packet | Proxy | Server | Match |
     |---|---|---|---|
     | `op_get_segment`: read BLOB handle `0x7FFF` that was never opened | 
object 0, no data, error 335544328 `isc_bad_segstr_handle` "invalid BLOB 
handle" | object 0, no data, error 335544328 `isc_bad_segstr_handle` "invalid 
BLOB handle" | yes |
   
   ---
   
   Before committing this PR, I'm sure that I have checked the following 
options:
   - [x] My code follows the [code of 
conduct](https://shardingsphere.apache.org/community/en/involved/conduct/code/) 
of this project.
   - [x] I have self-reviewed the commit code.
   - [ ] I have (or in comment I request) added corresponding labels for the 
pull request.
   - [ ] I have passed maven check locally : `./mvnw clean install -B -T1C 
-Dmaven.javadoc.skip -Dmaven.jacoco.skip -e`.
   - [ ] I have made corresponding changes to the documentation.
   - [x] I have added corresponding unit tests for my changes.
   - [ ] I have updated the Release Notes of the current development version. 
For more details, see [Update Release 
Note](https://shardingsphere.apache.org/community/en/involved/contribute/contributor/)
   - [ ] I have specified the tool and the affected files or area for 
substantial AI assistance, as required by the [AI-assisted contribution policy].
   
   [AI-assisted contribution policy]: 
https://github.com/apache/shardingsphere/blob/master/AI_POLICY.md
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to