From: Art Cancro Date: Wed, 8 Sep 2021 21:07:12 +0000 (+0000) Subject: Saving my place while we try something... X-Git-Tag: v939~12 X-Git-Url: https://code.citadel.org/?p=citadel.git;a=commitdiff_plain;h=24f7a7da2a52df3e90dbdfd310fc1f2780cd3caf Saving my place while we try something... --- diff --git a/citadel/database_cleanup.sh b/citadel/database_cleanup.sh index 38b1fa307..765494679 100755 --- a/citadel/database_cleanup.sh +++ b/citadel/database_cleanup.sh @@ -45,6 +45,13 @@ if [ -x /usr/local/ctdlsupport/bin/db_dump ] ; then DUMP=/usr/local/ctdlsupport/bin/db_dump LOAD=/usr/local/ctdlsupport/bin/db_load +# otherwise look in /usr/local +elif [ -x /usr/local/bin/db_dump ] ; then + export PATH=/usr/local/bin:$PATH + RECOVER=/usr/local/bin/db_recover + DUMP=/usr/local/bin/db_dump + LOAD=/usr/local/bin/db_load + # usual install else if test -f /usr/bin/db_dump; then diff --git a/citadel/internet_addressing.c b/citadel/internet_addressing.c index c19c4f82c..6c4619973 100644 --- a/citadel/internet_addressing.c +++ b/citadel/internet_addressing.c @@ -396,9 +396,7 @@ int expand_aliases(char *name, char *aliases) { int a; char aaa[SIZ]; int at = 0; - char node[64]; - syslog(LOG_DEBUG, "internet_addressing: \x1b[34mexpand_aliases(%s)\x1b[0m", name); if (aliases) { int num_aliases = num_tokens(aliases, '\n'); for (a=0; a to <%s>\x1b[0m", a, name, aaa); - if (!strcasecmp(name, aaa)) { + if ( (!IsEmptyStr(aaa)) && (!strcasecmp(name, aaa)) ) { syslog(LOG_DEBUG, "internet_addressing: global alias <%s> to <%s>", name, bar); strcpy(name, bar); } @@ -449,24 +446,17 @@ int expand_aliases(char *name, char *aliases) { } } - /* determine local or remote type, see citadel.h */ + /* Is this a local or remote recipient? */ at = haschar(name, '@'); - if (at == 0) return(EA_LOCAL); /* no @'s - local address */ - if (at > 1) return(EA_ERROR); /* >1 @'s - invalid address */ - remove_any_whitespace_to_the_left_or_right_of_at_symbol(name); - - /* figure out the delivery mode */ - extract_token(node, name, 1, '@', sizeof node); - - /* If there are one or more dots in the nodename, we assume that it - * is an FQDN and will attempt SMTP delivery to the Internet. - */ - if (haschar(node, '.') > 0) { - return(EA_INTERNET); + if (at == 0) { + return(EA_LOCAL); /* no @'s = local address */ + } + else if (at == 1) { + return(EA_INTERNET); /* one @ = internet address */ + } + else { + return(EA_ERROR); /* more than one @ = badly formed address */ } - - /* If we get to this point it's an invalid node name */ - return (EA_ERROR); } @@ -506,16 +496,15 @@ Array *split_recps(char *addresses) { Array *recipients_array = array_new(256); // no single recipient should be bigger than 256 bytes int num_addresses = num_tokens(a, ','); - syslog(LOG_DEBUG, "\x1b[35mEXTRACING: %d addresses from <%s>\x1b[0m", num_addresses, a); for (int i=0; i\x1b[0m", this_address); striplt(this_address); // strip leading and trailing whitespace stripout(this_address, '(', ')'); // remove any portion in parentheses stripallbut(this_address, '<', '>'); // if angle brackets are present, keep only what is inside them - syslog(LOG_DEBUG, "\x1b[35mPROCESSED: <%s>\x1b[0m", this_address); - array_append(recipients_array, this_address); + if (!IsEmptyStr(this_address)) { + array_append(recipients_array, this_address); + } } free(a); // We don't need this buffer anymore. @@ -545,8 +534,6 @@ struct recptypes *validate_recipients(char *supplied_recipients, const char *Rem char *org_recp; char this_recp[256]; - syslog(LOG_DEBUG, "internet_addressing: \x1b[32mvalidate_recipients(%s) \x1b[0m", supplied_recipients); - ret = (struct recptypes *) malloc(sizeof(struct recptypes)); // Initialize if (ret == NULL) return(NULL); memset(ret, 0, sizeof(struct recptypes)); // set all values to null/zero @@ -574,14 +561,17 @@ struct recptypes *validate_recipients(char *supplied_recipients, const char *Rem ret->display_recp[0] = 0; ret->recptypes_magic = RECPTYPES_MAGIC; - //char *aliases = CtdlGetSysConfig(GLOBAL_ALIASES); // First hit the Global Alias Table - char *aliases = strdup("root|admin,ajc@citadel.org,artcancro@gmail.com\n abuse|admin\n ajc|ajc@citadel.org\n"); + // char *aliases = CtdlGetSysConfig(GLOBAL_ALIASES); // First hit the Global Alias Table + // char *aliases = strdup("root|admin,ajc@citadel.org,artcancro@gmail.com\n abuse|admin\n ajc|ajc@citadel.org\n");//crashes + // char *aliases = strdup("root|admin,eeeeee@example.com\nabuse|admin\neek|blat\nwoiwozerosf|wow\n"); //works + // char *aliases = strdup("root|admin,ajc@citadel.org"); // works + // char *aliases = strdup("root|admin,eeeeee@example.com"); // works + // char *aliases = strdup("root|admin,eeeeeee@example.com"); // crashes + char *aliases = strdup("root|admin,ignatius.t.foobar@uncensored.citadel.org"); // crashes on the first try Array *recp_array = split_recps(supplied_recipients); int original_array_len = array_len(recp_array); - syslog(LOG_DEBUG, "\x1b[32moriginal_array_len=%d\x1b[0m", original_array_len); for (int r=0; rnum_error > 0) { cprintf("%d %s\n", ERROR + NO_SUCH_USER, valid_to->errormsg); free_recipients(valid_to); return; } - TRACE; valid_cc = validate_recipients(cc, NULL, 0); - TRACE; if (valid_cc->num_error > 0) { cprintf("%d %s\n", ERROR + NO_SUCH_USER, valid_cc->errormsg); free_recipients(valid_to); @@ -509,9 +505,7 @@ void cmd_ent0(char *entargs) { return; } - TRACE; valid_bcc = validate_recipients(bcc, NULL, 0); - TRACE; if (valid_bcc->num_error > 0) { cprintf("%d %s\n", ERROR + NO_SUCH_USER, valid_bcc->errormsg); free_recipients(valid_to); @@ -638,9 +632,7 @@ void cmd_ent0(char *entargs) { strcat(all_recps, bcc); } if (!IsEmptyStr(all_recps)) { - TRACE; valid = validate_recipients(all_recps, NULL, 0); - TRACE; } else { valid = NULL; diff --git a/citadel/modules/vcard/serv_vcard.c b/citadel/modules/vcard/serv_vcard.c index 9b30840a1..413be56ff 100644 --- a/citadel/modules/vcard/serv_vcard.c +++ b/citadel/modules/vcard/serv_vcard.c @@ -939,7 +939,7 @@ void check_get(void) { } else { - cprintf("500 REJECT noone here by that name.\n"); + cprintf("500 REJECT no one here by that name.\n"); syslog(LOG_INFO, "vcard: sending 500 REJECT no one here by that name: %s", internet_addr); } diff --git a/libcitadel/lib/array.c b/libcitadel/lib/array.c index a8adb292d..1adc1fde8 100644 --- a/libcitadel/lib/array.c +++ b/libcitadel/lib/array.c @@ -61,12 +61,18 @@ void array_append(Array *arr, void *new_element) { arr->num_alloc = 1; arr->num_elements = 0; arr->the_elements = malloc(arr->element_size * arr->num_alloc); + if (arr->the_elements == NULL) { + abort(); + } } ++arr->num_elements; if (arr->num_elements > arr->num_alloc) { arr->num_alloc = arr->num_alloc * 2; // whenever we exceed the buffer size, we double it. arr->the_elements = realloc(arr->the_elements, (arr->element_size * arr->num_alloc)); + if (arr->the_elements == NULL) { + abort(); + } } memcpy((arr->the_elements + ( (arr->num_elements-1) * arr->element_size )), new_element, arr->element_size); @@ -107,6 +113,10 @@ void array_delete_element_at(Array *arr, int index) { return; } + if (index < 0) { // If the supplied index is invalid, return quietly. + return; + } + --arr->num_elements; if (index == arr->num_elements) { // If we deleted the element at the end, there's no more to be done.