From: Pekka Riikonen Date: Sat, 30 Mar 2002 17:05:17 +0000 (+0000) Subject: updates. X-Git-Tag: silc.client.0.8.6~4^2~54 X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=commitdiff_plain;h=9734af565c9da0fdf77fd93283d7adcd8eb34b80 updates. --- diff --git a/CHANGES b/CHANGES index a668b810..b38d57e3 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,23 @@ +Sat Mar 30 18:15:55 EET 2002 Pekka Riikonen + + * Changed the object argument for silc_cipher_register, + silc_hash_register, silc_hmac_register and silc_pkcs_register + to const. Affected files are lib/silccrypt/silccipher.[ch], + silchash.[ch], silchmac.[ch] and silcpkcs.[ch]. + + * Changed the silc_get_username and silc_get_real_name to + never fail. Affected file lib/silcutil/unix/silcunixutil.c. + + * Fixed the Irssi SILC Client to use the silc_get_username and + silc_get_real_name insted of glib routines since the glib + routines only corrupt stack. Fixes the Irssi SILC to work in + Cygwin. Affected file irssi/src/silc/core/silc-core.c. + + * Fixed the Irssi to not use g_get_home_dir since it crashes + or returns garbage on cygwin and corrupts stack. Added function + get_home_dir to Irssi routines. Affected files are + irssi/src/core/misc.[ch] and irssi/src/core/core.c. + Fri Mar 29 21:55:41 EET 2002 Pekka Riikonen * Made some structure optimizations. SFTP memory FS MemFSEntry diff --git a/apps/irssi/src/core/core.c b/apps/irssi/src/core/core.c index b11064cb..0deb5090 100644 --- a/apps/irssi/src/core/core.c +++ b/apps/irssi/src/core/core.c @@ -192,9 +192,10 @@ void core_init_paths(int argc, char *argv[]) args_register(options); if (irssi_dir == NULL) - irssi_dir = g_strdup_printf(IRSSI_DIR_FULL, g_get_home_dir()); + irssi_dir = g_strdup_printf(IRSSI_DIR_FULL, get_home_dir()); if (irssi_config_file == NULL) - irssi_config_file = g_strdup_printf("%s/"IRSSI_HOME_CONFIG, irssi_dir); + irssi_config_file = g_strdup_printf("%s/"IRSSI_HOME_CONFIG, + irssi_dir); session_set_binary(argv[0]); } diff --git a/apps/irssi/src/core/misc.c b/apps/irssi/src/core/misc.c index 6bf87177..93612d6b 100644 --- a/apps/irssi/src/core/misc.c +++ b/apps/irssi/src/core/misc.c @@ -26,6 +26,7 @@ #ifdef HAVE_REGEX_H # include #endif +#include typedef struct { int condition; @@ -448,11 +449,24 @@ int mkpath(const char *path, int mode) return 0; } +/* Get home directory */ +const char *get_home_dir(void) +{ + struct passwd *pw = getpwuid(getuid()); + if (!pw) { + if (g_getenv("HOME")) + return g_getenv("HOME"); + else + return "."; + } + return pw->pw_dir; +} + /* convert ~/ to $HOME */ char *convert_home(const char *path) { return *path == '~' && (*(path+1) == '/' || *(path+1) == '\0') ? - g_strconcat(g_get_home_dir(), path+1, NULL) : + g_strconcat((char *)get_home_dir, path+1, NULL) : g_strdup(path); } diff --git a/apps/irssi/src/core/misc.h b/apps/irssi/src/core/misc.h index 804cffc2..a321bdfc 100644 --- a/apps/irssi/src/core/misc.h +++ b/apps/irssi/src/core/misc.h @@ -61,6 +61,10 @@ int regexp_match(const char *str, const char *regexp); /* Create the directory and all it's parent directories */ int mkpath(const char *path, int mode); + +/* Get home directory */ +const char *get_home_dir(void); + /* convert ~/ to $HOME */ char *convert_home(const char *path); diff --git a/apps/irssi/src/silc/core/silc-core.c b/apps/irssi/src/silc/core/silc-core.c index a58a1ec3..114f03af 100644 --- a/apps/irssi/src/silc/core/silc-core.c +++ b/apps/irssi/src/silc/core/silc-core.c @@ -100,7 +100,7 @@ static void silc_init_userinfo(void) if (!str) str = g_getenv("IRCNAME"); settings_set_str("real_name", - str != NULL ? str : g_get_real_name()); + str != NULL ? str : silc_get_real_name()); } /* username */ @@ -110,8 +110,8 @@ static void silc_init_userinfo(void) if (!str) str = g_getenv("IRCUSER"); settings_set_str("user_name", - str != NULL ? str : g_get_user_name()); - + str != NULL ? str : silc_get_username()); + user_name = settings_get_str("user_name"); } @@ -129,12 +129,7 @@ static void silc_init_userinfo(void) /* alternate nick */ set = settings_get_str("alternate_nick"); if (set == NULL || *set == '\0') { - if (strlen(nick) < 9) - str = g_strconcat(nick, "_", NULL); - else { - str = g_strdup(nick); - str[strlen(str)-1] = '_'; - } + str = g_strconcat(nick, "_", NULL); settings_set_str("alternate_nick", str); g_free(str); } @@ -171,7 +166,7 @@ static void silc_register_cipher(SilcClient client, const char *cipher) if (cipher) { for (i = 0; silc_default_ciphers[i].name; i++) if (!strcmp(silc_default_ciphers[i].name, cipher)) { - silc_cipher_register((SilcCipherObject *)&silc_default_ciphers[i]); + silc_cipher_register(&(silc_default_ciphers[i])); break; } @@ -192,7 +187,7 @@ static void silc_register_hash(SilcClient client, const char *hash) if (hash) { for (i = 0; silc_default_hash[i].name; i++) if (!strcmp(silc_default_hash[i].name, hash)) { - silc_hash_register((SilcHashObject *)&silc_default_hash[i]); + silc_hash_register(&(silc_default_hash[i])); break; } @@ -213,7 +208,7 @@ static void silc_register_hmac(SilcClient client, const char *hmac) if (hmac) { for (i = 0; silc_default_hmacs[i].name; i++) if (!strcmp(silc_default_hmacs[i].name, hmac)) { - silc_hmac_register((SilcHmacObject *)&silc_default_hmacs[i]); + silc_hmac_register(&(silc_default_hmacs[i])); break; } diff --git a/lib/silccrypt/silccipher.c b/lib/silccrypt/silccipher.c index 27e63395..ba13a022 100644 --- a/lib/silccrypt/silccipher.c +++ b/lib/silccrypt/silccipher.c @@ -90,7 +90,7 @@ const SilcCipherObject silc_default_ciphers[] = registered. Therefore, if memory has been allocated for the object sent as argument it has to be free'd after this function returns succesfully. */ -bool silc_cipher_register(SilcCipherObject *cipher) +bool silc_cipher_register(const SilcCipherObject *cipher) { #ifndef SILC_EPOC SilcCipherObject *new; @@ -168,7 +168,7 @@ bool silc_cipher_register_default(void) int i; for (i = 0; silc_default_ciphers[i].name; i++) - silc_cipher_register((SilcCipherObject *)&(silc_default_ciphers[i])); + silc_cipher_register(&(silc_default_ciphers[i])); #endif /* SILC_EPOC */ return TRUE; diff --git a/lib/silccrypt/silccipher.h b/lib/silccrypt/silccipher.h index 3c1d549a..f33ef64f 100644 --- a/lib/silccrypt/silccipher.h +++ b/lib/silccrypt/silccipher.h @@ -117,7 +117,7 @@ bool silc_##cipher##_decrypt_cbc(void *context, \ SilcUInt32 silc_##cipher##_context_len() /* Prototypes */ -bool silc_cipher_register(SilcCipherObject *cipher); +bool silc_cipher_register(const SilcCipherObject *cipher); bool silc_cipher_unregister(SilcCipherObject *cipher); bool silc_cipher_register_default(void); bool silc_cipher_alloc(const unsigned char *name, SilcCipher *new_cipher); diff --git a/lib/silccrypt/silchash.c b/lib/silccrypt/silchash.c index 4ec2a925..5e740df5 100644 --- a/lib/silccrypt/silchash.c +++ b/lib/silccrypt/silchash.c @@ -43,7 +43,7 @@ const SilcHashObject silc_default_hash[] = /* Registers a new hash function into the SILC. This function is used at the initialization of the SILC. */ -bool silc_hash_register(SilcHashObject *hash) +bool silc_hash_register(const SilcHashObject *hash) { #ifndef SILC_EPOC SilcHashObject *new; @@ -119,7 +119,7 @@ bool silc_hash_register_default(void) int i; for (i = 0; silc_default_hash[i].name; i++) - silc_hash_register((SilcHashObject *)&(silc_default_hash[i])); + silc_hash_register(&(silc_default_hash[i])); #endif /* SILC_EPOC */ return TRUE; diff --git a/lib/silccrypt/silchash.h b/lib/silccrypt/silchash.h index c5091240..cf4a6be4 100644 --- a/lib/silccrypt/silchash.h +++ b/lib/silccrypt/silchash.h @@ -84,7 +84,7 @@ void silc_##hash##_transform(SilcUInt32 *state, \ SilcUInt32 silc_##hash##_context_len() /* Prototypes */ -bool silc_hash_register(SilcHashObject *hash); +bool silc_hash_register(const SilcHashObject *hash); bool silc_hash_unregister(SilcHashObject *hash); bool silc_hash_register_default(void); bool silc_hash_alloc(const unsigned char *name, SilcHash *new_hash); diff --git a/lib/silccrypt/silchmac.c b/lib/silccrypt/silchmac.c index 21bb1e5f..dfde14da 100644 --- a/lib/silccrypt/silchmac.c +++ b/lib/silccrypt/silchmac.c @@ -82,7 +82,7 @@ static void silc_hmac_init_internal(SilcHmac hmac, unsigned char *key, /* Registers a new HMAC into the SILC. This function is used at the initialization of the SILC. */ -bool silc_hmac_register(SilcHmacObject *hmac) +bool silc_hmac_register(const SilcHmacObject *hmac) { #ifndef SILC_EPOC SilcHmacObject *new; @@ -152,7 +152,7 @@ bool silc_hmac_register_default(void) int i; for (i = 0; silc_default_hmacs[i].name; i++) - silc_hmac_register((SilcHmacObject *)&(silc_default_hmacs[i])); + silc_hmac_register(&(silc_default_hmacs[i])); #endif /* SILC_EPOC */ return TRUE; diff --git a/lib/silccrypt/silchmac.h b/lib/silccrypt/silchmac.h index a64b5366..ae9ab2e3 100644 --- a/lib/silccrypt/silchmac.h +++ b/lib/silccrypt/silchmac.h @@ -84,7 +84,7 @@ extern DLLAPI const SilcHmacObject silc_default_hmacs[]; * * SYNOPSIS * - * bool silc_hmac_register(SilcHmacObject *hmac); + * bool silc_hmac_register(const SilcHmacObject *hmac); * * DESCRIPTION * @@ -97,7 +97,7 @@ extern DLLAPI const SilcHmacObject silc_default_hmacs[]; * that are builtin the sources. Returns FALSE on error. * ***/ -bool silc_hmac_register(SilcHmacObject *hmac); +bool silc_hmac_register(const SilcHmacObject *hmac); /****f* silccrypt/SilcHMACAPI/silc_hmac_unregister * diff --git a/lib/silccrypt/silcpkcs.c b/lib/silccrypt/silcpkcs.c index d61ed0c8..4e7cdcfe 100644 --- a/lib/silccrypt/silcpkcs.c +++ b/lib/silccrypt/silcpkcs.c @@ -58,7 +58,7 @@ const SilcPKCSObject silc_default_pkcs[] = /* Register a new PKCS into SILC. This is used at the initialization of the SILC. */ -bool silc_pkcs_register(SilcPKCSObject *pkcs) +bool silc_pkcs_register(const SilcPKCSObject *pkcs) { #ifndef SILC_EPOC SilcPKCSObject *new; @@ -128,7 +128,7 @@ bool silc_pkcs_register_default(void) int i; for (i = 0; silc_default_pkcs[i].name; i++) - silc_pkcs_register((SilcPKCSObject *)&(silc_default_pkcs[i])); + silc_pkcs_register(&(silc_default_pkcs[i])); #endif /* SILC_EPOC */ return TRUE; diff --git a/lib/silccrypt/silcpkcs.h b/lib/silccrypt/silcpkcs.h index 15bb8b52..8e9ad2e1 100644 --- a/lib/silccrypt/silcpkcs.h +++ b/lib/silccrypt/silcpkcs.h @@ -172,7 +172,7 @@ int silc_##pkcs##_verify(void *context, \ SilcUInt32 data_len) /* Prototypes */ -bool silc_pkcs_register(SilcPKCSObject *pkcs); +bool silc_pkcs_register(const SilcPKCSObject *pkcs); bool silc_pkcs_unregister(SilcPKCSObject *pkcs); bool silc_pkcs_register_default(void); bool silc_pkcs_alloc(const unsigned char *name, SilcPKCS *new_pkcs); diff --git a/lib/silcutil/unix/silcunixutil.c b/lib/silcutil/unix/silcunixutil.c index 8cb6a723..42b6edac 100644 --- a/lib/silcutil/unix/silcunixutil.c +++ b/lib/silcutil/unix/silcunixutil.c @@ -140,11 +140,9 @@ char *silc_get_username() struct passwd *pw; pw = getpwuid(getuid()); - if (!pw) { - fprintf(stderr, "silc_get_username: %s\n", strerror(errno)); - return NULL; - } - + if (!pw) + return strdup("foo"); + logname = pw->pw_name; } } @@ -160,10 +158,8 @@ char *silc_get_real_name() struct passwd *pw; pw = getpwuid(getuid()); - if (!pw) { - fprintf(stderr, "silc_get_username: %s\n", strerror(errno)); - return NULL; - } + if (!pw) + return strdup("Foo T. Bar"); if (strchr(pw->pw_gecos, ',')) *strchr(pw->pw_gecos, ',') = 0;