+/*
+ Concatenate ACEs
+*/
+ace_t *concat_aces(ace_t *aces1, int ace1count, ace_t *aces2, int ace2count)
+{
+ ace_t *new_aces;
+ int i, j;
+
+ /* malloc buffer for new ACL */
+ if ((new_aces = malloc((ace1count + ace2count) * sizeof(ace_t))) == NULL) {
+ LOG(log_error, logtype_afpd, "combine_aces: malloc %s", strerror(errno));
+ return NULL;
+ }
+
+ /* Copy ACEs from buf1 */
+ for (i=0; i < ace1count; ) {
+ memcpy(&new_aces[i], &aces1[i], sizeof(ace_t));
+ i++;
+ }
+
+ j = i;
+
+ /* Copy ACEs from buf2 */
+ for (i=0; i < ace2count; ) {
+ memcpy(&new_aces[j], &aces2[i], sizeof(ace_t));
+ i++;
+ j++;
+ }
+ return new_aces;
+}
+