Skip to content

Commit c8b9149

Browse files
flags unknown
1 parent 2b7f4d2 commit c8b9149

File tree

1 file changed

+15
-12
lines changed

1 file changed

+15
-12
lines changed

pbusinessaccount.c

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
#include "pfolder.h"
3232

3333
#include <stdio.h>
34+
3435
typedef struct _email_vis_params {
3536
char** email;
3637
size_t *length;
@@ -680,12 +681,12 @@ static int check_write_permissions (psync_folderid_t folderid) {
680681
psync_uint_row row;
681682
int ret = 0;
682683

683-
res=psync_sql_query_nolock("SELECT permissions, flags, name FROM folder WHERE id=?");
684+
res=psync_sql_query("SELECT permissions, flags, name FROM folder WHERE id=?");
684685
psync_sql_bind_uint(res, 1, folderid);
685686
row=psync_sql_fetch_rowint(res);
686687
if (unlikely(!row))
687688
debug(D_ERROR, "could not find folder of folderid %lu", (unsigned long)folderid);
688-
else if (((row[1])&3)!=P_O_RDONLY && !((row[0])&(PSYNC_PERM_MODIFY|PSYNC_PERM_CREATE)))
689+
else if (/*(((row[1]) & 3) != O_RDONLY) &&*/ ((row[0]&PSYNC_PERM_MODIFY)&&(row[0]&PSYNC_PERM_CREATE)))
689690
ret = 1;
690691

691692
psync_sql_free_result(res);
@@ -695,25 +696,27 @@ static int check_write_permissions (psync_folderid_t folderid) {
695696
psync_folderid_t psync_check_and_create_folder (const char * path) {
696697
psync_folderid_t folderid=psync_get_folderid_by_path_or_create(path);
697698
if (folderid==PSYNC_INVALID_FOLDERID || (!check_write_permissions(folderid))){
698-
char *buff;
699+
char *buff=NULL;
699700
uint32_t bufflen;
700701
int ind = 1;
701-
char *err;
702+
char *err=NULL;
702703

703704
while (ind < 100) {
704705
folderid=PSYNC_INVALID_FOLDERID;
705706
bufflen = strlen(path) + 1 /*zero char*/ + 3 /*parenthesis*/ + 3 /*up to 3 digit index*/;
706707
buff = (char *) psync_malloc(bufflen);
707708
snprintf(buff, bufflen - 1, "%s (%d)", path, ind);
708-
if (psync_create_remote_folder_by_path(buff, &err)!= 0) {
709-
folderid=psync_get_folderid_by_path_or_create(buff);
710-
if ((folderid != PSYNC_INVALID_FOLDERID)&&check_write_permissions(folderid)) {
711-
psync_free(buff);
712-
break;
713-
}
714-
} else
715-
debug(D_NOTICE,"Unable to create folder %s error is %s.", buff, err);
709+
if (psync_create_remote_folder_by_path(buff, &err)!=0)
710+
debug(D_NOTICE, "Unable to create folder %s error is %s.", buff, err);
711+
folderid=psync_get_folderid_by_path_or_create(buff);
712+
if ((folderid!=PSYNC_INVALID_FOLDERID)&&check_write_permissions(folderid)) {
713+
psync_free(buff);
714+
break;
715+
}
716716
++ind;
717+
718+
if (err)
719+
psync_free(err);
717720
psync_free(buff);
718721
}
719722
}

0 commit comments

Comments
 (0)