Skip to content

After fixing #60, I noticed that it fails with invalid references (in v2) #62

@svaningelgem

Description

@svaningelgem

This is for javaobj.v2:

For the zipfile, I refer to #60: https://github.com/user-attachments/files/20650125/github.zip
It's the same file

2025-06-09 11:31:09.924 | DEBUG    | Reading new object: handle 7e0066, classdesc [classdesc 0x7e002e: name com.xk72.proxy.ssl.SSLExtension, uid 5472812825558780993]
2025-06-09 11:31:09.925 | DEBUG    | Done reading object handle 7e0066
2025-06-09 11:31:09.925 | DEBUG    | Reading new object: handle 7e0068, classdesc [classdesc 0x7e002e: name com.xk72.proxy.ssl.SSLExtension, uid 5472812825558780993]
2025-06-09 11:31:09.926 | DEBUG    | Done reading object handle 7e0068
2025-06-09 11:31:09.927 | DEBUG    | Reading new object: handle 7e006a, classdesc [classdesc 0x7e002e: name com.xk72.proxy.ssl.SSLExtension, uid 5472812825558780993]
2025-06-09 11:31:09.928 | DEBUG    | Done reading object handle 7e006a
2025-06-09 11:31:09.929 | DEBUG    | Reading new object: handle 7e006c, classdesc [classdesc 0x7e002e: name com.xk72.proxy.ssl.SSLExtension, uid 5472812825558780993]
2025-06-09 11:31:09.929 | DEBUG    | Done reading object handle 7e006c
2025-06-09 11:31:09.930 | DEBUG    | Done reading object handle 7e004b
2025-06-09 11:31:09.931 | DEBUG    | Reading new object: handle 7e0073, classdesc [classdesc 0x7e0071: name java.util.LinkedHashMap, uid 3801124242820219131]

[..]

2025-06-09 11:31:10.029 | DEBUG    | Done reading object handle 7e0020
2025-06-09 11:31:10.030 | DEBUG    | Reading new object: handle 7e011e, classdesc [classdesc 0x7e0016: name com.xk72.charles.model.Transaction, uid -8299564089223892536]
2025-06-09 11:31:10.030 | DEBUG    | Error parsing session: Invalid reference handle: 7e006f
2025-06-09 11:31:10.030 | DEBUG    | Parse error: Invalid reference handle: 7e006f

The weird thing is that the handles are all spaced out by 2: 7e0066 / ~68 / ~6a / ~6c (logically the next would be ~6e). so is there some issue with object counting?

Not exactly a one-of-by, but I'm gessing it would need the hashmap at 7e0073 or so?


In v1 I get:

2025-06-09 11:36:50.876 | DEBUG    |                                               ## New reference handle 0x7E006F: JavaArray -> []
2025-06-09 11:36:50.877 | DEBUG    |                                               size: 32
2025-06-09 11:36:50.877 | DEBUG    |                                             * [ clientProposedSslSessionID: <javaobj:[B>
2025-06-09 11:36:50.878 | DEBUG    | Reading field: Ljava/lang/String; - clientSslProtocol
2025-06-09 11:36:50.879 | DEBUG    |                                               OpCode: 0x71 -- TC_REFERENCE (at offset 0x21A2)
2025-06-09 11:36:50.880 | DEBUG    |                                               ## Reference handle: 0x7E006E

[ .. ]

2025-06-09 11:36:50.956 | DEBUG    |                                                 objectAnnotation value: Server Settings
2025-06-09 11:36:50.957 | DEBUG    |                                                   OpCode: 0x74 -- TC_STRING (at offset 0x23A8)
2025-06-09 11:36:50.957 | DEBUG    |                                                   [string]
2025-06-09 11:36:50.958 | DEBUG    |                                                   ## New reference handle 0x7E007D: JavaString -> 'SETTINGS_HEADER_TABLE_SIZE = 4096\nSETTINGS_ENABLE_PUSH = 1\nSETTINGS_MAX_CONCURRENT_STREAMS = 25\nSETTINGS_INITIAL_WINDOW_SIZE = 33554432\nSETTINGS_MAX_FRAME_SIZE = 18432\nSETTINGS_MAX_HEADER_LIST_SIZE = unlimited\n'
2025-06-09 11:36:50.959 | DEBUG    |                                                 objectAnnotation value: SETTINGS_HEADER_TABLE_SIZE = 4096
SETTINGS_ENABLE_PUSH = 1
SETTINGS_MAX_CONCURRENT_STREAMS = 25
SETTINGS_INITIAL_WINDOW_SIZE = 33554432
SETTINGS_MAX_FRAME_SIZE = 18432
SETTINGS_MAX_HEADER_LIST_SIZE = unlimited

2025-06-09 11:36:50.960 | DEBUG    |                                                   OpCode: 0x78 -- TC_ENDBLOCKDATA (at offset 0x247D)
2025-06-09 11:36:50.960 | DEBUG    |                                                 objectAnnotation value: None
2025-06-09 11:36:50.961 | DEBUG    |                                                 java_object.annotations after: ['\x00\x00\x00\x08\x00\x00\x00\x05', 'Client Connection', '#1729414940', 'Server Connection', '#1051510635', 'Stream Id', '439', 'Client Settings', 'SETTINGS_HEADER_TABLE_SIZE = 65536\nSETTINGS_ENABLE_PUSH = 0\nSETTINGS_MAX_CONCURRENT_STREAMS = unlimited\nSETTINGS_INITIAL_WINDOW_SIZE = 131072\nSETTINGS_MAX_FRAME_SIZE = 16384\nSETTINGS_MAX_HEADER_LIST_SIZE = unlimited\n', 'Server Settings', 'SETTINGS_HEADER_TABLE_SIZE = 4096\nSETTINGS_ENABLE_PUSH = 1\nSETTINGS_MAX_CONCURRENT_STREAMS = 25\nSETTINGS_INITIAL_WINDOW_SIZE = 33554432\nSETTINGS_MAX_FRAME_SIZE = 18432\nSETTINGS_MAX_HEADER_LIST_SIZE = unlimited\n']
2025-06-09 11:36:50.962 | DEBUG    | Java object has extra loading capability.
2025-06-09 11:36:50.962 | ERROR    | ==Oops state dump=============

So in v1 it can find the correct reference, not in v2. But in v1 it crashes because of some other stuff...

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions