@@ -95,7 +95,7 @@ int wh_MessageAuth_TranslateLoginResponse(
9595
9696 WH_T32 (magic , dest , src , rc );
9797 WH_T16 (magic , dest , src , user_id );
98- WH_T32 ( magic , dest , src , permissions );
98+
9999 return 0 ;
100100}
101101
@@ -128,13 +128,16 @@ int wh_MessageAuth_FlattenPermissions(whAuthPermissions* permissions,
128128 buffer [idx ++ ] = (uint8_t )(permissions -> groupPermissions & 0xFF );
129129 buffer [idx ++ ] = (uint8_t )((permissions -> groupPermissions >> 8 ) & 0xFF );
130130
131- /* Serialize actionPermissions array (4*WH_NUMBER_OF_GROUPS bytes) */
132- for (i = 0 ; i < WH_NUMBER_OF_GROUPS && (idx + 3 ) < buffer_len ; i ++ ) {
133- uint32_t actionPerm = permissions -> actionPermissions [i ];
134- buffer [idx ++ ] = (uint8_t )(actionPerm & 0xFF );
135- buffer [idx ++ ] = (uint8_t )((actionPerm >> 8 ) & 0xFF );
136- buffer [idx ++ ] = (uint8_t )((actionPerm >> 16 ) & 0xFF );
137- buffer [idx ++ ] = (uint8_t )((actionPerm >> 24 ) & 0xFF );
131+ /* Serialize actionPermissions array (4*WH_NUMBER_OF_GROUPS*WH_AUTH_ACTION_WORDS bytes) */
132+ for (i = 0 ; i < WH_NUMBER_OF_GROUPS ; i ++ ) {
133+ int j ;
134+ for (j = 0 ; j < WH_AUTH_ACTION_WORDS ; j ++ ) {
135+ uint32_t actionPerm = permissions -> actionPermissions [i ][j ];
136+ buffer [idx ++ ] = (uint8_t )(actionPerm & 0xFF );
137+ buffer [idx ++ ] = (uint8_t )((actionPerm >> 8 ) & 0xFF );
138+ buffer [idx ++ ] = (uint8_t )((actionPerm >> 16 ) & 0xFF );
139+ buffer [idx ++ ] = (uint8_t )((actionPerm >> 24 ) & 0xFF );
140+ }
138141 }
139142
140143 /* Serialize keyIdCount (2 bytes) */
@@ -145,7 +148,7 @@ int wh_MessageAuth_FlattenPermissions(whAuthPermissions* permissions,
145148 buffer [idx ++ ] = (uint8_t )((keyIdCount >> 8 ) & 0xFF );
146149
147150 /* Serialize keyIds array (4*WH_AUTH_MAX_KEY_IDS bytes) */
148- for (i = 0 ; i < WH_AUTH_MAX_KEY_IDS && ( idx + 3 ) < buffer_len ; i ++ ) {
151+ for (i = 0 ; i < WH_AUTH_MAX_KEY_IDS ; i ++ ) {
149152 if (i < keyIdCount ) {
150153 keyId = permissions -> keyIds [i ];
151154 }
@@ -178,14 +181,17 @@ int wh_MessageAuth_UnflattenPermissions(uint8_t* buffer, uint16_t buffer_len,
178181 permissions -> groupPermissions = buffer [idx ] | (buffer [idx + 1 ] << 8 );
179182 idx += 2 ;
180183
181- /* Deserialize actionPermissions array (4*WH_NUMBER_OF_GROUPS bytes) */
182- for (i = 0 ; i < WH_NUMBER_OF_GROUPS && (idx + 3 ) < buffer_len ; i ++ ) {
183- permissions -> actionPermissions [i ] =
184- buffer [idx ] |
185- (buffer [idx + 1 ] << 8 ) |
186- (buffer [idx + 2 ] << 16 ) |
187- (buffer [idx + 3 ] << 24 );
188- idx += 4 ;
184+ /* Deserialize actionPermissions array (4*WH_NUMBER_OF_GROUPS*WH_AUTH_ACTION_WORDS bytes) */
185+ for (i = 0 ; i < WH_NUMBER_OF_GROUPS ; i ++ ) {
186+ int j ;
187+ for (j = 0 ; j < WH_AUTH_ACTION_WORDS ; j ++ ) {
188+ permissions -> actionPermissions [i ][j ] =
189+ buffer [idx ] |
190+ (buffer [idx + 1 ] << 8 ) |
191+ (buffer [idx + 2 ] << 16 ) |
192+ (buffer [idx + 3 ] << 24 );
193+ idx += 4 ;
194+ }
189195 }
190196
191197 /* Deserialize keyIdCount (2 bytes) */
@@ -197,7 +203,7 @@ int wh_MessageAuth_UnflattenPermissions(uint8_t* buffer, uint16_t buffer_len,
197203 permissions -> keyIdCount = keyIdCount ;
198204
199205 /* Deserialize keyIds array (4*WH_AUTH_MAX_KEY_IDS bytes) */
200- for (i = 0 ; i < WH_AUTH_MAX_KEY_IDS && ( idx + 3 ) < buffer_len ; i ++ ) {
206+ for (i = 0 ; i < WH_AUTH_MAX_KEY_IDS ; i ++ ) {
201207 keyId = buffer [idx ] |
202208 (buffer [idx + 1 ] << 8 ) |
203209 (buffer [idx + 2 ] << 16 ) |
0 commit comments