annotate cli-channel.c @ 1663:c795520269f9

Fallback for key gen without hard link support (#89) Add a non-atomic fallback for key generation on platforms where link() is not permitted (such as most stock Android installs) or on filesystems without hard link support (such as FAT).
author Matt Robinson <git@nerdoftheherd.com>
date Sat, 14 Mar 2020 14:37:35 +0000
parents 1c7bf9cec6c8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
107
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
1 /*
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
2 * Dropbear SSH
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
3 *
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
4 * Copyright (c) 2002-2004 Matt Johnston
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
5 * All rights reserved.
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
6 *
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
7 * Permission is hereby granted, free of charge, to any person obtaining a copy
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
8 * of this software and associated documentation files (the "Software"), to deal
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
9 * in the Software without restriction, including without limitation the rights
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
10 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
11 * copies of the Software, and to permit persons to whom the Software is
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
12 * furnished to do so, subject to the following conditions:
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
13 *
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
14 * The above copyright notice and this permission notice shall be included in
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
15 * all copies or substantial portions of the Software.
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
16 *
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
18 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
20 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
21 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
22 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
23 * SOFTWARE. */
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
24
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
25 #include "includes.h"
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
26 #include "channel.h"
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
27 #include "buffer.h"
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
28 #include "circbuffer.h"
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
29 #include "dbutil.h"
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
30 #include "session.h"
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
31 #include "ssh.h"
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
32
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
33 /* We receive channel data - only used by the client chansession code*/
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
34 void recv_msg_channel_extended_data() {
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
35
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
36 struct Channel *channel;
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
37 unsigned int datatype;
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
38
165
0cfba3034be5 Fixed DEBUG_TRACE macro so that we don't get semicolons left about the place
Matt Johnston <matt@ucc.asn.au>
parents: 107
diff changeset
39 TRACE(("enter recv_msg_channel_extended_data"))
107
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
40
179
161557a9dde8 * fix longstanding bug with connections being closed on failure to
Matt Johnston <matt@ucc.asn.au>
parents: 165
diff changeset
41 channel = getchannel();
107
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
42
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
43 if (channel->type != &clichansess) {
165
0cfba3034be5 Fixed DEBUG_TRACE macro so that we don't get semicolons left about the place
Matt Johnston <matt@ucc.asn.au>
parents: 107
diff changeset
44 TRACE(("leave recv_msg_channel_extended_data: chantype is wrong"))
107
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
45 return; /* we just ignore it */
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
46 }
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
47
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
48 datatype = buf_getint(ses.payload);
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
49
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
50 if (datatype != SSH_EXTENDED_DATA_STDERR) {
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
51 TRACE(("leave recv_msg_channel_extended_data: wrong datatype: %d",
165
0cfba3034be5 Fixed DEBUG_TRACE macro so that we don't get semicolons left about the place
Matt Johnston <matt@ucc.asn.au>
parents: 107
diff changeset
52 datatype))
107
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
53 return;
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
54 }
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
55
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
56 common_recv_msg_channel_data(channel, channel->errfd, channel->extrabuf);
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
57
165
0cfba3034be5 Fixed DEBUG_TRACE macro so that we don't get semicolons left about the place
Matt Johnston <matt@ucc.asn.au>
parents: 107
diff changeset
58 TRACE(("leave recv_msg_channel_extended_data"))
107
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
59 }