~ubuntu-branches/debian/stretch/dropbear/stretch

« back to all changes in this revision

Viewing changes to dbutil.c

  • Committer: Package Import Robot
  • Author(s): Gerrit Pape, Matt Johnston, Gerrit Pape
  • Date: 2013-10-25 15:00:48 UTC
  • mfrom: (1.4.6)
  • Revision ID: package-import@ubuntu.com-20131025150048-3jq765x96xayk392
Tags: 2013.60-1
[ Matt Johnston ]
* New upstream release.

[ Gerrit Pape ]
* debian/diff/0004-cve-2013-4421.diff, 0005-user-disclosure.diff:
  remove; fixed upstream.
* debian/dropbear.postinst: don't fail if initramfs-tools it not
  installed (closes: #692653).

Show diffs side-by-side

added added

removed removed

Lines of Context:
138
138
 
139
139
#ifdef DEBUG_TRACE
140
140
void dropbear_trace(const char* format, ...) {
141
 
 
142
141
        va_list param;
 
142
        struct timeval tv;
143
143
 
144
144
        if (!debug_trace) {
145
145
                return;
146
146
        }
147
147
 
148
 
        va_start(param, format);
149
 
        fprintf(stderr, "TRACE (%d): ", getpid());
 
148
        gettimeofday(&tv, NULL);
 
149
 
 
150
        va_start(param, format);
 
151
        fprintf(stderr, "TRACE  (%d) %d.%d: ", getpid(), tv.tv_sec, tv.tv_usec);
 
152
        vfprintf(stderr, format, param);
 
153
        fprintf(stderr, "\n");
 
154
        va_end(param);
 
155
}
 
156
 
 
157
void dropbear_trace2(const char* format, ...) {
 
158
        static int trace_env = -1;
 
159
        va_list param;
 
160
        struct timeval tv;
 
161
 
 
162
        if (trace_env == -1) {
 
163
                trace_env = getenv("DROPBEAR_TRACE2") ? 1 : 0;
 
164
        }
 
165
 
 
166
        if (!(debug_trace && trace_env)) {
 
167
                return;
 
168
        }
 
169
 
 
170
        gettimeofday(&tv, NULL);
 
171
 
 
172
        va_start(param, format);
 
173
        fprintf(stderr, "TRACE2 (%d) %d.%d: ", getpid(), tv.tv_sec, tv.tv_usec);
150
174
        vfprintf(stderr, format, param);
151
175
        fprintf(stderr, "\n");
152
176
        va_end(param);
443
467
                return DROPBEAR_FAILURE;
444
468
        }
445
469
 
446
 
#ifdef __uClinux__
 
470
#ifdef USE_VFORK
447
471
        pid = vfork();
448
472
#else
449
473
        pid = fork();
725
749
 
726
750
        int c = EOF;
727
751
 
728
 
        TRACE(("enter buf_getline"))
729
 
 
730
752
        buf_setpos(line, 0);
731
753
        buf_setlen(line, 0);
732
754
 
750
772
 
751
773
        /* if we didn't read anything before EOF or error, exit */
752
774
        if (c == EOF && line->pos == 0) {
753
 
                TRACE(("leave buf_getline: failure"))
754
775
                return DROPBEAR_FAILURE;
755
776
        } else {
756
 
                TRACE(("leave buf_getline: success"))
757
777
                buf_setpos(line, 0);
758
778
                return DROPBEAR_SUCCESS;
759
779
        }
864
884
                return DROPBEAR_SUCCESS;
865
885
        }
866
886
}
 
887
 
 
888
int constant_time_memcmp(const void* a, const void *b, size_t n)
 
889
{
 
890
        const char *xa = a, *xb = b;
 
891
        uint8_t c = 0;
 
892
        size_t i;
 
893
        for (i = 0; i < n; i++)
 
894
        {
 
895
                c |= (xa[i] ^ xb[i]);
 
896
        }
 
897
        return c;
 
898
}
 
899