static int status_server(char *data, const char *server, const struct afp_options *options)
{
char *start = data;
- char *Obj, *Type, *Zone;
+ char *Obj;
char buf[32];
uint16_t status;
size_t len;
offset = ntohs(offset);
data += offset;
- char *DirectoryNamesCount = data++, *DirectoryNames = data;
- *DirectoryNamesCount = 0;
+ char *DirectoryNamesCount = 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);
}
krb5_unparse_name(context, entry.principal, &principal);
+#ifdef HAVE_KRB5_FREE_KEYTAB_ENTRY_CONTENTS
+ krb5_free_keytab_entry_contents(context, &entry);
+#elif defined(HAVE_KRB5_KT_FREE_ENTRY)
krb5_kt_free_entry(context, &entry);
-
+#endif
append_directoryname(&data,
offset,
&size,
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;
- uint16_t offset, status;
+ uint16_t offset;
memcpy(&offset, data + *nameoffset, sizeof(offset));
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);
status_machine(status);
status_versions(status, dsi);
status_uams(status, options->uamlist);
- if (options->flags & OPTION_CUSTOMICON)
- status_icon(status, icon, sizeof(icon), c);
- else
- status_icon(status, apple_atalk_icon, sizeof(apple_atalk_icon), c);
+ status_icon(status, icon, sizeof(icon), c);
sigoff = status_signature(status, &c, options);
/* c now contains the offset where the netaddress offset lives */
if ( statuslen < maxstatuslen)
statuslen = status_utf8servername(status, &c, dsi, options);
- if ((options->flags & OPTION_CUSTOMICON) == 0) {
- status_icon(status, apple_tcp_icon, sizeof(apple_tcp_icon), 0);
- }
-
dsi->signature = status + sigoff;
dsi->statuslen = statuslen;
}
char *servername_conf;
int header = 0;
char buf[1024], *p;
- FILE *fp = NULL, *randomp;
+ FILE *fp = NULL;
size_t len;
char *server_tmp;