offset = ntohs(offset);
data += offset;
- char *DirectoryNamesCount = data++, *DirectoryNames = data;
- *DirectoryNamesCount = 0;
+ char *DirectoryNamesCount = data++;
+ char *DirectoryNames = data;
size_t size = sizeof(uint8_t);
+ *DirectoryNamesCount = 0;
if (!uam_gss_enabled())
goto offset_calc;
"status:DirectoryNames: specified service principal '%s' not found in keytab",
principal);
// XXX: should this be krb5_xfree?
+#ifdef HAVE_KRB5_FREE_UNPARSED_NAME
krb5_free_unparsed_name(context, principal);
+#else
+ krb5_xfree(principal);
+#endif
goto krb5_cleanup;
}
krb5_free_principal(context, service_principal);
strlen(principal),
principal);
- // XXX: should this be krb5_xfree?
- krb5_free_unparsed_name(context, principal);
+ free(principal);
goto krb5_cleanup;
krb5_error:
if (ret) {
error_msg = krb5_get_error_message(context, ret);
- LOG(log_error, logtype_afpd,
- "status:DirectoryNames: Kerberos error: %s",
- (char *) error_msg);
+ LOG(log_note, logtype_afpd, "Can't get principal from default keytab: %s",
+ (char *)error_msg);
+#ifdef HAVE_KRB5_FREE_ERROR_MESSAGE
krb5_free_error_message(context, error_msg);
+#else
+ krb5_xfree(error_msg);
+#endif
}
krb5_cleanup:
const DSI *dsi _U_,
const struct afp_options *options)
{
- char *Obj, *Type, *Zone;
uint16_t namelen;
size_t len;
char *begin = data;
offset = ntohs(offset);
data += offset;
- /* FIXME:
- * What is the valid character range for an nbpname?
- *
- * Apple's server likes to use the non-qualified hostname
- * This obviously won't work very well if multiple servers are running
- * on the box.
- */
+ LOG(log_info, logtype_afpd, "servername: %s", options->hostname);
- /* extract the obj part of the server */
- Obj = options->hostname;
- if ((size_t) -1 == (len = convert_string (
- options->unixcharset, CH_UTF8_MAC,
- Obj, -1, data+sizeof(namelen), maxstatuslen-offset )) ) {
- LOG ( log_error, logtype_afpd, "Could not set utf8 servername");
+ if ((len = convert_string(options->unixcharset,
+ CH_UTF8_MAC,
+ options->hostname,
+ -1,
+ data + sizeof(namelen),
+ maxstatuslen-offset)) == (size_t)-1) {
+ LOG(log_error, logtype_afpd, "Could not set utf8 servername");
/* set offset to 0 */
memset(begin + *nameoffset, 0, sizeof(offset));
options->flags & OPTION_SERVERNOTIF,
(options->fqdn || ipok),
options->passwdbits,
- uam_gss_enabled(),
+ 1,
options->flags);
/* returns offset to signature offset */
c = status_server(status, options->hostname, options);