From: Frank Lahm Date: Tue, 17 Apr 2012 10:00:42 +0000 (+0200) Subject: Ensure CNID gets written for created files X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=netatalk.git;a=commitdiff_plain;h=cf94edd7bdddd2dcc316d5820545f52256dea97b Ensure CNID gets written for created files --- diff --git a/etc/afpd/file.c b/etc/afpd/file.c index d06d4684..9fe01851 100644 --- a/etc/afpd/file.c +++ b/etc/afpd/file.c @@ -728,8 +728,14 @@ int afp_createfile(AFPObj *obj, char *ibuf, size_t ibuflen _U_, char *rbuf _U_, return AFPERR_MISC; } - (void)get_id(vol, &ad, &st, dir->d_did, upath, strlen(upath)); + cnid_t id; + if ((id = get_id(vol, &ad, &st, dir->d_did, upath, strlen(upath))) == CNID_INVALID) { + LOG(log_error, logtype_afpd, "afp_createfile(\"%s\"): CNID error", upath); + goto createfile_iderr; + } + (void)ad_setid(&ad, st.st_dev, st.st_ino, id, dir->d_did, vol->v_stamp); +createfile_iderr: ad_flush(&ad); ad_close(&ad, ADFLAGS_DF|ADFLAGS_HF ); fce_register_new_file(s_path);