Changes in / [ddcff199:c77406a]


Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • otr.c

    rddcff199 rc77406a  
    185185/* find a private key by fingerprint prefix (given as any number of hex strings) */
    186186OtrlPrivKey *match_privkey(irc_t *irc, const char **args);
    187 
    188 /* check whether a string is safe to use in a path component */
    189 int strsane(const char *s);
    190187
    191188/* functions to be called for certain events */
     
    278275        int kg=0;
    279276
    280         if(strsane(irc->user->nick)) {
    281                 g_snprintf(s, 511, "%s%s.otr_keys", global.conf->configdir, irc->user->nick);
    282                 e = otrl_privkey_read(irc->otr->us, s);
    283                 if(e && e!=enoent) {
    284                         irc_rootmsg(irc, "otr load: %s: %s", s, gcry_strerror(e));
    285                 }
    286                 g_snprintf(s, 511, "%s%s.otr_fprints", global.conf->configdir, irc->user->nick);
    287                 e = otrl_privkey_read_fingerprints(irc->otr->us, s, NULL, NULL);
    288                 if(e && e!=enoent) {
    289                         irc_rootmsg(irc, "otr load: %s: %s", s, gcry_strerror(e));
    290                 }
     277        g_snprintf(s, 511, "%s%s.otr_keys", global.conf->configdir, irc->user->nick);
     278        e = otrl_privkey_read(irc->otr->us, s);
     279        if(e && e!=enoent) {
     280                irc_rootmsg(irc, "otr load: %s: %s", s, gcry_strerror(e));
     281        }
     282        g_snprintf(s, 511, "%s%s.otr_fprints", global.conf->configdir, irc->user->nick);
     283        e = otrl_privkey_read_fingerprints(irc->otr->us, s, NULL, NULL);
     284        if(e && e!=enoent) {
     285                irc_rootmsg(irc, "otr load: %s: %s", s, gcry_strerror(e));
    291286        }
    292287       
     
    311306        gcry_error_t e;
    312307
    313         if(strsane(irc->user->nick)) {
    314                 g_snprintf(s, 511, "%s%s.otr_fprints", global.conf->configdir, irc->user->nick);
    315                 e = otrl_privkey_write_fingerprints(irc->otr->us, s);
    316                 if(e) {
    317                         irc_rootmsg(irc, "otr save: %s: %s", s, gcry_strerror(e));
    318                 }
    319                 chmod(s, 0600);
    320         }
     308        g_snprintf(s, 511, "%s%s.otr_fprints", global.conf->configdir, irc->user->nick);
     309        e = otrl_privkey_write_fingerprints(irc->otr->us, s);
     310        if(e) {
     311                irc_rootmsg(irc, "otr save: %s: %s", s, gcry_strerror(e));
     312        }
     313        chmod(s, 0600);
    321314}
    322315
     
    325318        char s[512];
    326319       
    327         if(strsane(nick)) {
    328                 g_snprintf(s, 511, "%s%s.otr_keys", global.conf->configdir, nick);
    329                 unlink(s);
    330                 g_snprintf(s, 511, "%s%s.otr_fprints", global.conf->configdir, nick);
    331                 unlink(s);
    332         }
     320        g_snprintf(s, 511, "%s%s.otr_keys", global.conf->configdir, nick);
     321        unlink(s);
     322        g_snprintf(s, 511, "%s%s.otr_fprints", global.conf->configdir, nick);
     323        unlink(s);
    333324}
    334325
     
    337328        char s[512], t[512];
    338329       
    339         if(strsane(nnick) && strsane(onick)) {
    340                 g_snprintf(s, 511, "%s%s.otr_keys", global.conf->configdir, onick);
    341                 g_snprintf(t, 511, "%s%s.otr_keys", global.conf->configdir, nnick);
    342                 rename(s,t);
    343                 g_snprintf(s, 511, "%s%s.otr_fprints", global.conf->configdir, onick);
    344                 g_snprintf(t, 511, "%s%s.otr_fprints", global.conf->configdir, nnick);
    345                 rename(s,t);
    346         }
     330        g_snprintf(s, 511, "%s%s.otr_keys", global.conf->configdir, onick);
     331        g_snprintf(t, 511, "%s%s.otr_keys", global.conf->configdir, nnick);
     332        rename(s,t);
     333        g_snprintf(s, 511, "%s%s.otr_fprints", global.conf->configdir, onick);
     334        g_snprintf(t, 511, "%s%s.otr_fprints", global.conf->configdir, nnick);
     335        rename(s,t);
    347336}
    348337
     
    17881777        irc_rootmsg(irc, "%s", msg);
    17891778        if(filename[0]) {
    1790                 if(strsane(irc->user->nick)) {
    1791                         char *kf = g_strdup_printf("%s%s.otr_keys", global.conf->configdir, irc->user->nick);
    1792                         char *tmp = g_strdup_printf("%s.new", kf);
    1793                         copyfile(filename, tmp);
    1794                         unlink(filename);
    1795                         rename(tmp,kf);
    1796                         otrl_privkey_read(irc->otr->us, kf);
    1797                         g_free(kf);
    1798                         g_free(tmp);
    1799                 } else {
    1800                         otrl_privkey_read(irc->otr->us, filename);
    1801                         unlink(filename);
    1802                 }
     1779                char *kf = g_strdup_printf("%s%s.otr_keys", global.conf->configdir, irc->user->nick);
     1780                char *tmp = g_strdup_printf("%s.new", kf);
     1781                copyfile(filename, tmp);
     1782                unlink(filename);
     1783                rename(tmp,kf);
     1784                otrl_privkey_read(irc->otr->us, kf);
     1785                g_free(kf);
     1786                g_free(tmp);
    18031787        }
    18041788       
     
    18751859}
    18761860
    1877 /* check whether a string is safe to use in a path component */
    1878 int strsane(const char *s)
    1879 {
    1880         return strpbrk(s, "/\\") == NULL;
    1881 }
    1882 
    18831861/* vim: set noet ts=4 sw=4: */
Note: See TracChangeset for help on using the changeset viewer.