Class StringDataInstance.StaticStringInstance

    • Constructor Detail

      • StaticStringInstance

        public StaticStringInstance​(java.lang.String fakeStr,
                                    int fakeLen)
    • Method Detail

      • getStringValue

        public java.lang.String getStringValue()
        Description copied from class: StringDataInstance
        Returns the string contained in the specified MemBuffer, or null if all the bytes of the string could not be read.

        This method deals in characters of size StringDataInstance.charSize, that might be padded to a larger size. The raw n-byte characters are converted into a Java String using a Java Charset or by using a custom Ghidra conversion. (see convertBytesToStringCustomCharset)

        The MemBuffer's endian'ness is used to determine which end of the padded field contains our StringDataInstance.charSize character bytes which will be used to create the java String.

        Overrides:
        getStringValue in class StringDataInstance
        Returns:
        String containing the characters in buf or null if unable to read all length bytes from the membuffer.
      • getStringRepresentation

        public java.lang.String getStringRepresentation()
        Description copied from class: StringDataInstance
        Returns a formatted version of the string returned by StringDataInstance.getStringValue().

        The resulting string will be formatted with quotes around the parts that contain plain ASCII alpha characters (and simple escape sequences), and out-of-range byte-ish values listed as comma separated hex-encoded values:

        Example (quotes are part of result): "Test\tstring",01,02,"Second\npart",00

        Overrides:
        getStringRepresentation in class StringDataInstance
        Returns:
        formatted String
      • getStringLength

        public int getStringLength()
        Description copied from class: StringDataInstance
        Returns the length, in bytes, of the string data object contained in the MemBuffer, or -1 if the length could not be determined.

        This is not the same as the number of characters in the string, or the number of bytes occupied by the characters. For instance, pascal strings have a 1 or 2 byte length field that increases the size of the string data object beyond the characters in the string, and null terminated strings have don't include the null character, but its presence is included in the size of the string object.

        For length-specified string data types that do not use null-terminators and with a known data instance length (ie. not a probe), this method just returns the value specified in the constructor length parameter, otherwise a null-terminator is searched for.

        When searching for a null-terminator, the constructor length parameter will be respected or ignored depending on the StringLayoutEnum.

        When the length parameter is ignored (ie. "unbounded" searching), the search is limited to StringDataInstance.MAX_STRING_LENGTH bytes.

        The MemBuffer's endian'ness is used to determine which end of the padded character field contains our n-bit character which will be tested for null-ness. (not the endian'ness of the character set name - ie. "UTF-16BE")

        Overrides:
        getStringLength in class StringDataInstance
        Returns:
        length of the string (NOT including null term if null term probe), in bytes, or -1 if no terminator found.