VirtualBox

Changes between Version 1 and Version 2 of Ticket #18513, comment 2


Ignore:
Timestamp:
Mar 21, 2019 11:05:14 PM (5 years ago)
Author:
cleanner

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #18513, comment 2

    v1 v2  
    4949
    5050Thanks!
    51 
    52 Replying to [ticket:18513 cleanner]:
    53 > When I set the VM with a speical name called "'''abc.def'''", it leads to a heap failure after I start the video recording.
    54 >
    55 > It's because it finally free a string which can not be released by '''RTStrFree()''', which will lead to a heap failure.
    56 >
    57 > I found that the error comes from "'''src\VBox\Main\src-client\VideoRec.cpp'''", line '''950'''.
    58 >
    59 > -----------------------------------------------------------------------------------------------
    60 > 944:    char *pszAbsPath = RTPathAbsDup(com::Utf8Str(pCfg->File.strName).c_str());[[BR]]
    61 >
    62 > 945:    AssertPtrReturn(pszAbsPath, VERR_NO_MEMORY);[[BR]]
    63 >
    64 > 947:    RTPathStripSuffix(pszAbsPath);[[BR]]
    65 >
    66 > 948:    AssertPtrReturn(pszAbsPath, VERR_INVALID_PARAMETER);[[BR]]
    67 >
    68 > 950:    char *pszSuff    = '''RTPathSuffix(pszAbsPath)''';    /*  it should be "char *pszSuff    = '''NULL'''"; */[[BR]]
    69 >
    70 > 951:    if (!pszSuff)[[BR]]
    71 >
    72 > 952:        pszSuff = '''RTStrDup'''(".webm");[[BR]]
    73 >
    74 >
    75 > ......
    76 >
    77 > 991:    '''RTStrFree'''(pszSuff);[[BR]]
    78 >
    79 >
    80 > -----------------------------------------------------------------------------------------------
    81 >
    82 > Let me try to explain why the error happen if the VM is just called like "'''abc.def'''" or "'''xxx.xxx'''":
    83 >
    84 > Here we suggest the video recording path is "'''C:\abc.def.webm'''"(it's auto generated by VirtualBox GUI)
    85 >
    86 > When the applicatioin comes to line '''950''':
    87 >
    88 > '''pszAbsPath:C:\abc.def'''
    89 >
    90 > After line '''950''':
    91 >
    92 > '''pszSuff:.def'''
    93 >
    94 > Yeah!!!We catch the bug.Got it?
    95 >
    96 > So when the applicatioin comes to line '''951''':
    97 >
    98 > the line '''952''' will not excute because the string '''pszSuff(".def")''' comes from '''RTPathSuffix()''', which returns a string that cannot be release by '''RTStrFree()'''.
    99 >
    100 > So when the applicatioin comes to line '''991''', as we all know, it will definitely leads to a heap failure.
    101 >
    102 > A solution is to modify the  line '''950''' as I do above, such as "char *pszSuff    = NULL". After that, the line '''952''' will execute and the string pointerd by '''pszSuff''' will comes from a string that can be released by '''RTStrFree()''' which return from '''RTStrDup()'''.
    103 >
    104 > ---------------------------------------------------------------------------
    105 >
    106 > Finally, I am just a nameless cleanner from china, thanks for updating the new version for the Shanghai/Zhaoxin CPU, thhough which are not developed but just copied by chinese companies.
    107 > I hopes that in the fure, several Chinese companies will build a excellent PC/Server field's CPU which are wholly developped by Chinese engineers, even better than CPUs made by Intel/AMD.

© 2023 Oracle
ContactPrivacy policyTerms of Use