void UserManager::CheckAndAddWellknownAccount( StringClass &chassisSerialNumber ){ User *pUser, *pNewUser = NULL; U32 i; for( i = 0; i < GetManagedObjectCount(); i++ ){ pUser = (User *)GetManagedObject( i ); if( pUser->GetUserName() == StringClass(DEFAULT_SECURE_USER_NAME) ){ pNewUser = pUser; break; } } if( pNewUser && (pNewUser->GetPassword() != chassisSerialNumber ) ){ ValueSet *pVs = new ValueSet(); DesignatorId id = pNewUser->GetDesignatorId(); UnicodeString s = pNewUser->GetPassword(); pVs->AddGenericValue( (char *)&id, sizeof(id), SSAPI_USER_MANAGER_CHANGE_PASSWORD_OBJECT_ID ); pVs->AddString( &s, SSAPI_USER_MANAGER_CHANGE_PASSWORD_OLD_PASSWORD ); s = UnicodeString(StringClass(chassisSerialNumber)); pVs->AddString( &s,SSAPI_USER_MANAGER_CHANGE_PASSWORD_NEW_PASSWORD ); ChangePassword( *pVs, new SsapiLocalResponder(this, (LOCAL_EVENT_CALLBACK)METHOD_ADDRESS(UserManager, DummyCallback) ) ); delete pVs; } else if( !pNewUser ){ // create a new dude pNewUser = new User( GetListenManager() ); pNewUser->SetUserName( UnicodeString(StringClass(DEFAULT_SECURE_USER_NAME)) ); pNewUser->SetPassword( UnicodeString(StringClass(chassisSerialNumber)) ); AddUser(pNewUser, new SsapiLocalResponder(this, (LOCAL_EVENT_CALLBACK)METHOD_ADDRESS(UserManager, DummyCallback) ) ); delete pNewUser; } }