Changeset e50cd56 for functions.c


Ignore:
Timestamp:
Jul 11, 2002, 12:47:16 AM (19 years ago)
Author:
Erik Nygren <nygren@mit.edu>
Branches:
master, barnowl_perlaim, debian, owl, release-1.4, release-1.5, release-1.6, release-1.7, release-1.8, release-1.9
Children:
aa2f33b3
Parents:
e173507
Message:
Fixed some buffer overruns in the "reply" command.
When repying to "all" on a message that begins with "CC:" (eg, sent
         with "zwrite -C", the reply line will be constructed
         from the sender and the usernames on the CC: line
         of the message being replied to.
There is no such thing as C-R, so left C-r as it is but added:
         M-r --- edit reply to all
         M-R --- edit reply to sender
File:
1 edited

Legend:

Unmodified
Added
Removed
  • functions.c

    rae9e6be re50cd56  
    13551355   * if enter = 1 then don't wait for editing
    13561356   */
    1357   char buff[1024];
     1357  char *buff, *oldbuff;
    13581358  owl_message *m;
    13591359  owl_filter *f;
     
    13621362    owl_function_makemsg("No message selected");
    13631363  } else {
    1364     char *class, *inst, *to;
     1364    char *class, *inst, *to, *cc=NULL;
    13651365   
    13661366    m=owl_view_get_element(owl_global_get_current_view(&g), owl_global_get_curmsg(&g));
     
    13951395        inst=owl_message_get_instance(m);
    13961396        to=owl_message_get_recipient(m);
     1397        cc=owl_message_get_cc(m);
    13971398        if (!strcmp(to, "") || !strcmp(to, "*")) {
    13981399          to="";
     
    14051406     
    14061407      /* create the command line */
    1407       strcpy(buff, "zwrite");
     1408      buff = owl_strdup("zwrite");
    14081409      if (strcasecmp(class, "message")) {
    1409         sprintf(buff, "%s -c %s%s%s", buff, owl_getquoting(class), class, owl_getquoting(class));
     1410        buff = owl_sprintf("%s -c %s%s%s", oldbuff=buff, owl_getquoting(class), class, owl_getquoting(class));
     1411        owl_free(oldbuff);
    14101412      }
    14111413      if (strcasecmp(inst, "personal")) {
    1412         sprintf(buff, "%s -i %s%s%s", buff, owl_getquoting(inst), inst, owl_getquoting(inst));
     1414        buff = owl_sprintf("%s -i %s%s%s", oldbuff=buff, owl_getquoting(inst), inst, owl_getquoting(inst));
     1415        owl_free(oldbuff);
    14131416      }
    14141417      if (*to != '\0') {
    1415         char *tmp;
     1418        char *tmp, *oldtmp;
    14161419        tmp=pretty_sender(to);
    1417         sprintf(buff, "%s %s", buff, tmp);
     1420        if (cc) {
     1421          tmp = owl_util_uniq(oldtmp=tmp, cc, "-");
     1422          owl_free(oldtmp);
     1423          buff = owl_sprintf("%s -C %s", oldbuff=buff, tmp);
     1424          owl_free(oldbuff);
     1425        } else {
     1426          tmp=pretty_sender(to);
     1427          buff = owl_sprintf("%s %s", oldbuff=buff, tmp);
     1428          owl_free(oldbuff);
     1429        }
    14181430        owl_free(tmp);
    14191431      }
     1432      if (cc) owl_free(cc);
    14201433
    14211434      if (enter) {
     
    14271440        owl_function_start_command(buff);
    14281441      }
     1442      owl_free(buff);
    14291443    }
    14301444  }
Note: See TracChangeset for help on using the changeset viewer.