Changeset 70086 in vbox
- Timestamp:
- Dec 12, 2017 5:36:51 PM (7 years ago)
- Location:
- trunk
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/HostServices/GuestPropertySvc.h
r70064 r70086 164 164 /** 165 165 * Write out flags to a string. 166 * 166 167 * @returns IPRT status code 167 * @param fFlags the flags to write out168 * @param pszFlags where to write the flags string. This must point to169 * a buffer of size (at least) MAX_FLAGS_LEN.170 */ 171 DECLINLINE(int) GuestPropWriteFlags(uint32_t fFlags, char *pszFlags)168 * @param fFlags The flags to write out. 169 * @param pszFlags Where to write the flags string. 170 * @param cbFlags The size of the destination buffer (in bytes). 171 */ 172 DECLINLINE(int) GuestPropWriteFlags(uint32_t fFlags, char* pszFlags, size_t cbFlags) 172 173 { 173 174 /* Putting READONLY before the other RDONLY flags keeps the result short. */ … … 181 182 if ((fFlags & ~GUEST_PROP_F_ALLFLAGS) == GUEST_PROP_F_NILFLAG) 182 183 { 183 char *pszNext;184 unsigned i;185 186 184 /* TRANSRESET implies TRANSIENT. For compatability with old clients we 187 185 always set TRANSIENT when TRANSRESET appears. */ … … 189 187 fFlags |= GUEST_PROP_F_TRANSIENT; 190 188 191 pszNext = pszFlags; 192 for (i = 0; i < RT_ELEMENTS(s_aFlagList); ++i) 189 char *pszTemp = NULL; 190 191 for (unsigned i = 0; i < RT_ELEMENTS(s_aFlagList); ++i) 193 192 { 194 193 if (s_aFlagList[i] == (fFlags & s_aFlagList[i])) 195 194 { 196 strcpy(pszNext, GuestPropFlagName(s_aFlagList[i])); 197 pszNext += GuestPropFlagNameLen(s_aFlagList[i]); 195 RTStrAAppend(&pszTemp, GuestPropFlagName(s_aFlagList[i])); 198 196 fFlags &= ~s_aFlagList[i]; 199 197 if (fFlags != GUEST_PROP_F_NILFLAG) 200 { 201 strcpy(pszNext, ", "); 202 pszNext += 2; 203 } 198 RTStrAAppend(&pszTemp, ", "); 204 199 } 205 200 } 206 *pszNext = '\0'; 201 202 if ( RT_SUCCESS(rc) 203 && pszTemp) 204 rc = RTStrCopy(pszFlags, cbFlags, pszTemp); 205 206 if (pszTemp) 207 RTStrFree(pszTemp); 207 208 208 209 Assert(fFlags == GUEST_PROP_F_NILFLAG); /* bad s_aFlagList */ -
trunk/src/VBox/HostServices/GuestProperties/service.cpp
r70063 r70086 619 619 { 620 620 char szFlags[GUEST_PROP_MAX_FLAGS_LEN]; 621 rc = GuestPropWriteFlags(pProp->mFlags, szFlags );621 rc = GuestPropWriteFlags(pProp->mFlags, szFlags, sizeof(szFlags)); 622 622 if (RT_SUCCESS(rc)) 623 623 { … … 857 857 858 858 char szFlags[GUEST_PROP_MAX_FLAGS_LEN]; 859 int rc = GuestPropWriteFlags(pProp->mFlags, szFlags );859 int rc = GuestPropWriteFlags(pProp->mFlags, szFlags, sizeof(szFlags)); 860 860 if (RT_FAILURE(rc)) 861 861 return rc; … … 1016 1016 { 1017 1017 char szFlags[GUEST_PROP_MAX_FLAGS_LEN]; 1018 rc = GuestPropWriteFlags(prop.mFlags, szFlags );1018 rc = GuestPropWriteFlags(prop.mFlags, szFlags, sizeof(szFlags)); 1019 1019 if (RT_SUCCESS(rc)) 1020 1020 { … … 1215 1215 /* Send out a host notification */ 1216 1216 const char *pszValue = prop.mValue.c_str(); 1217 rc = GuestPropWriteFlags(prop.mFlags, szFlags );1217 rc = GuestPropWriteFlags(prop.mFlags, szFlags, sizeof(szFlags)); 1218 1218 if (RT_SUCCESS(rc)) 1219 1219 rc = notifyHost(pszProperty, pszValue, u64Timestamp, szFlags); … … 1406 1406 1407 1407 char szFlags[GUEST_PROP_MAX_FLAGS_LEN]; 1408 int rc = GuestPropWriteFlags(pProp->mFlags, szFlags );1408 int rc = GuestPropWriteFlags(pProp->mFlags, szFlags, sizeof(szFlags)); 1409 1409 if (RT_FAILURE(rc)) 1410 1410 RTStrPrintf(szFlags, sizeof(szFlags), "???"); -
trunk/src/VBox/HostServices/GuestProperties/testcase/tstGuestPropSvc.cpp
r70063 r70086 120 120 if (RT_SUCCESS(rc)) 121 121 { 122 rc = GuestPropWriteFlags(fFlags, pszFlagBuffer );122 rc = GuestPropWriteFlags(fFlags, pszFlagBuffer, GUEST_PROP_MAX_FLAGS_LEN); 123 123 if (RT_FAILURE(rc)) 124 124 RTTestIFailed("Failed to convert flag string '%s' back to a string.", … … 159 159 RTTestISub("Rejection of an invalid flags field"); 160 160 /* This is required to fail. */ 161 if (RT_SUCCESS(GuestPropWriteFlags(u32BadFlags, pszFlagBuffer )))161 if (RT_SUCCESS(GuestPropWriteFlags(u32BadFlags, pszFlagBuffer, GUEST_PROP_MAX_FLAGS_LEN))) 162 162 { 163 163 RTTestIFailed("Flags 0x%x were incorrectly written out as '%.*s'\n", … … 828 828 { 829 829 char szFlags[GUEST_PROP_MAX_FLAGS_LEN]; 830 if (RT_FAILURE(GuestPropWriteFlags(fFlags, szFlags )))830 if (RT_FAILURE(GuestPropWriteFlags(fFlags, szFlags, sizeof(szFlags)))) 831 831 RTTestIFailed("Failed to set the global flags."); 832 832 else -
trunk/src/VBox/Main/src-client/ConsoleImpl2.cpp
r70063 r70086 5974 5974 { 5975 5975 char szFlags[GUEST_PROP_MAX_FLAGS_LEN]; 5976 if (RT_FAILURE(GuestPropWriteFlags(fFlags, szFlags )))5976 if (RT_FAILURE(GuestPropWriteFlags(fFlags, szFlags, sizeof(szFlags)))) 5977 5977 Log(("Failed to set the global flags.\n")); 5978 5978 else -
trunk/src/VBox/Main/src-server/MachineImpl.cpp
r70061 r70086 5655 5655 aValue = it->second.strValue; 5656 5656 *aTimestamp = it->second.mTimestamp; 5657 GuestPropWriteFlags(it->second.mFlags, szFlags );5657 GuestPropWriteFlags(it->second.mFlags, szFlags, sizeof(szFlags)); 5658 5658 aFlags = Utf8Str(szFlags); 5659 5659 } … … 5937 5937 aValues[i] = it->second.strValue; 5938 5938 aTimestamps[i] = it->second.mTimestamp; 5939 GuestPropWriteFlags(it->second.mFlags, szFlags );5939 GuestPropWriteFlags(it->second.mFlags, szFlags, sizeof(szFlags)); 5940 5940 aFlags[i] = Utf8Str(szFlags); 5941 5941 } … … 10452 10452 prop.timestamp = property.mTimestamp; 10453 10453 char szFlags[GUEST_PROP_MAX_FLAGS_LEN + 1]; 10454 GuestPropWriteFlags(property.mFlags, szFlags );10454 GuestPropWriteFlags(property.mFlags, szFlags, sizeof(szFlags)); 10455 10455 prop.strFlags = szFlags; 10456 10456 … … 13537 13537 if (it->second.mFlags) 13538 13538 { 13539 GuestPropWriteFlags(it->second.mFlags, szFlags );13539 GuestPropWriteFlags(it->second.mFlags, szFlags, sizeof(szFlags)); 13540 13540 aFlags[i] = szFlags; 13541 13541 }
Note:
See TracChangeset
for help on using the changeset viewer.