Changeset 34959 in vbox for trunk/src/VBox/HostDrivers
- Timestamp:
- Dec 10, 2010 3:17:31 PM (14 years ago)
- svn:sync-xref-src-repo-rev:
- 68779
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/HostDrivers/Support/SUPLib.cpp
r34241 r34959 2083 2083 * @param pszFilename The full file name. 2084 2084 * @param phLdrMod Where to store the handle to the loaded module. 2085 * @param pszError Where to return the loader error. Optional. 2086 * @param cbError The size of the buffer pointed to by @a pszError. 2085 2087 */ 2086 static int supR3HardenedLdrLoadIt(const char *pszFilename, PRTLDRMOD phLdrMod )2088 static int supR3HardenedLdrLoadIt(const char *pszFilename, PRTLDRMOD phLdrMod, char *pszError, size_t cbError) 2087 2089 { 2088 2090 #ifdef VBOX_WITH_HARDENING … … 2101 2103 * Try load it. 2102 2104 */ 2103 return RTLdrLoad (pszFilename, phLdrMod);2104 } 2105 2106 2107 SUPR3DECL(int) SUPR3HardenedLdrLoad(const char *pszFilename, PRTLDRMOD phLdrMod )2105 return RTLdrLoadEx(pszFilename, phLdrMod, pszError, cbError); 2106 } 2107 2108 2109 SUPR3DECL(int) SUPR3HardenedLdrLoad(const char *pszFilename, PRTLDRMOD phLdrMod, char *pszError, size_t cbError) 2108 2110 { 2109 2111 /* 2110 2112 * Validate input. 2111 2113 */ 2112 AssertPtrReturn(pszFilename, VERR_INVALID_PARAMETER); 2113 AssertPtrReturn(phLdrMod, VERR_INVALID_PARAMETER); 2114 if (!pszError) 2115 AssertReturn(!cbError, VERR_INVALID_PARAMETER); 2116 else 2117 { 2118 AssertPtrReturn(pszError, VERR_INVALID_POINTER); 2119 if (cbError) 2120 *pszError = '\0'; 2121 else 2122 pszError = NULL; 2123 } 2124 AssertPtrReturn(pszFilename, VERR_INVALID_POINTER); 2125 AssertPtrReturn(phLdrMod, VERR_INVALID_POINTER); 2114 2126 *phLdrMod = NIL_RTLDRMOD; 2115 2127 AssertReturn(RTPathHavePath(pszFilename), VERR_INVALID_PARAMETER); … … 2133 2145 * Pass it on to the common library loader. 2134 2146 */ 2135 return supR3HardenedLdrLoadIt(pszFilename, phLdrMod );2136 } 2137 2138 2139 SUPR3DECL(int) SUPR3HardenedLdrLoadAppPriv(const char *pszFilename, PRTLDRMOD phLdrMod )2140 { 2141 LogFlow(("SUPR3HardenedLdrLoadAppPriv: pszFilename=%p:{%s} phLdrMod=%p \n", pszFilename, pszFilename, phLdrMod));2147 return supR3HardenedLdrLoadIt(pszFilename, phLdrMod, pszError, cbError); 2148 } 2149 2150 2151 SUPR3DECL(int) SUPR3HardenedLdrLoadAppPriv(const char *pszFilename, PRTLDRMOD phLdrMod, char *pszError, size_t cbError) 2152 { 2153 LogFlow(("SUPR3HardenedLdrLoadAppPriv: pszFilename=%p:{%s} phLdrMod=%p pszError=%p cbError=%zu\n", pszFilename, pszFilename, phLdrMod, pszError, cbError)); 2142 2154 2143 2155 /* 2144 2156 * Validate input. 2145 2157 */ 2158 if (!pszError) 2159 AssertReturn(!cbError, VERR_INVALID_PARAMETER); 2160 else 2161 { 2162 AssertPtrReturn(pszError, VERR_INVALID_POINTER); 2163 if (cbError) 2164 *pszError = '\0'; 2165 else 2166 pszError = NULL; 2167 } 2146 2168 AssertPtrReturn(phLdrMod, VERR_INVALID_PARAMETER); 2147 2169 *phLdrMod = NIL_RTLDRMOD; … … 2185 2207 * Pass it on to SUPR3HardenedLdrLoad. 2186 2208 */ 2187 rc = SUPR3HardenedLdrLoad(szPath, phLdrMod );2209 rc = SUPR3HardenedLdrLoad(szPath, phLdrMod, pszError, cbError); 2188 2210 2189 2211 LogFlow(("SUPR3HardenedLdrLoadAppPriv: returns %Rrc\n", rc)); … … 2222 2244 * Try load it. 2223 2245 */ 2224 rc = RTLdrLoad(pszFilename, phLdrMod); 2225 if (RT_FAILURE(rc)) 2226 RTStrPrintf(pszErr, cbErr, "RTLdrLoad returned %Rrc", rc); 2227 return rc; 2246 return RTLdrLoadEx(pszFilename, phLdrMod, pszErr, cbErr); 2228 2247 } 2229 2248
Note:
See TracChangeset
for help on using the changeset viewer.