From: Frank Lahm Date: Sat, 3 Mar 2012 15:30:20 +0000 (+0100) Subject: Fixes X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=netatalk.git;a=commitdiff_plain;h=f3de6f64aedf6ee3b053534e2ed2fa6460ad5558 Fixes --- diff --git a/bin/ad/ad_util.c b/bin/ad/ad_util.c index 0143a1e4..d994f74f 100644 --- a/bin/ad/ad_util.c +++ b/bin/ad/ad_util.c @@ -138,9 +138,10 @@ int openvol(AFPObj *obj, const char *path, afpvol_t *vol) void closevol(afpvol_t *vol) { - if (vol->vol->v_cdb) + if (vol->vol->v_cdb) { cnid_close(vol->vol->v_cdb); - + vol->vol->v_cdb = NULL; + } memset(vol, 0, sizeof(afpvol_t)); } diff --git a/etc/afpd/volume.c b/etc/afpd/volume.c index 1adf24af..6fbb6ec3 100644 --- a/etc/afpd/volume.c +++ b/etc/afpd/volume.c @@ -641,22 +641,14 @@ static int volume_openDB(const AFPObj *obj, struct vol *volume) flags |= CNID_FLAG_NODEV; } - if (volume->v_cnidscheme == NULL) { - volume->v_cnidscheme = strdup(DEFAULT_CNID_SCHEME); - LOG(log_info, logtype_afpd, "Volume %s use CNID scheme %s.", - volume->v_path, volume->v_cnidscheme); - } - - LOG(log_info, logtype_afpd, "CNID server: %s:%s", - volume->v_cnidserver ? volume->v_cnidserver : obj->options.Cnid_srv, - volume->v_cnidport ? volume->v_cnidport : obj->options.Cnid_port); + LOG(log_debug, logtype_afpd, "CNID server: %s:%s", volume->v_cnidserver, volume->v_cnidport); volume->v_cdb = cnid_open(volume->v_path, volume->v_umask, volume->v_cnidscheme, flags, - volume->v_cnidserver ? volume->v_cnidserver : obj->options.Cnid_srv, - volume->v_cnidport ? volume->v_cnidport : obj->options.Cnid_port); + volume->v_cnidserver, + volume->v_cnidport); if ( ! volume->v_cdb && ! (flags & CNID_FLAG_MEMORY)) { /* The first attempt failed and it wasn't yet an attempt to open in-memory */ diff --git a/libatalk/adouble/ad_open.c b/libatalk/adouble/ad_open.c index c79d4251..94549cd8 100644 --- a/libatalk/adouble/ad_open.c +++ b/libatalk/adouble/ad_open.c @@ -1955,9 +1955,9 @@ int ad_convert(const char *path, const struct stat *sp, const struct vol *vol) LOG(log_debug, logtype_default,"ad_conv_v22ea_hf(\"%s\"): deleting adouble:v2 file: \"%s\"", path, fullpathname(adpath)); - become_root(); +// become_root(); EC_ZERO_LOG( unlink(adpath) ); - unbecome_root(); +// unbecome_root(); EC_CLEANUP: LOG(log_debug, logtype_default,"ad_convert(\"%s\"): END: %d", fullpathname(path), ret); diff --git a/libatalk/util/netatalk_conf.c b/libatalk/util/netatalk_conf.c index 93ff1478..b56b1e73 100644 --- a/libatalk/util/netatalk_conf.c +++ b/libatalk/util/netatalk_conf.c @@ -173,18 +173,18 @@ static int do_check_ea_support(const struct vol *vol) mktemp(eaname); - become_root(); +// become_root(); if ((sys_setxattr(vol->v_path, eaname, eacontent, 4, 0)) == 0) { sys_removexattr(vol->v_path, eaname); haseas = 1; } else { - LOG(log_warning, logtype_afpd, "volume \"%s\" does not support Extended Attributes", + LOG(log_warning, logtype_afpd, "volume \"%s\" does not support Extended Attributes or read-only volume root", vol->v_localname); haseas = 0; } - unbecome_root(); +// unbecome_root(); return haseas; } @@ -610,6 +610,8 @@ static struct vol *creatvol(AFPObj *obj, if (val = getoption(obj->iniconfig, section, "cnidscheme", preset)) EC_NULL( volume->v_cnidscheme = strdup(val) ); + else + volume->v_cnidscheme = strdup(DEFAULT_CNID_SCHEME); if (val = getoption(obj->iniconfig, section, "umask", preset)) volume->v_umask = (int)strtol(val, NULL, 8); @@ -652,11 +654,14 @@ static struct vol *creatvol(AFPObj *obj, volume->v_cnidserver = p; if (q = strrchr(val, ':')) { *q++ = 0; - volume->v_cnidport = q; + volume->v_cnidport = strdup(q); } else { - volume->v_cnidport = "4700"; + volume->v_cnidport = strdup("4700"); } + } else { + volume->v_cnidserver = strdup(obj->options.Cnid_srv); + volume->v_cnidport = strdup(obj->options.Cnid_port); } if (val = getoption(obj->iniconfig, section, "ea", preset)) { @@ -1034,10 +1039,7 @@ void volume_free(struct vol *vol) free(vol->v_gvs); free(vol->v_uuid); free(vol->v_cnidserver); -#if 0 - /* NO! Just points to v_cnidserver + x */ free(vol->v_cnidport); -#endif free(vol->v_root_preexec); free(vol->v_postexec); @@ -1281,7 +1283,6 @@ struct vol *getvolbypath(AFPObj *obj, const char *path) vol = creatvol(obj, pw, INISEC_HOMES, volname, volpath, preset ? preset : default_preset ? default_preset : NULL); EC_CLEANUP: - endpwent(); if (user) free(user); if (ret != 0)