aboutsummaryrefslogtreecommitdiff
path: root/libssh
diff options
context:
space:
mode:
Diffstat (limited to 'libssh')
-rw-r--r--libssh/auth1.c11
-rw-r--r--libssh/base64.c25
-rw-r--r--libssh/buffer.c71
-rw-r--r--libssh/channels.c22
-rw-r--r--libssh/client.c17
-rw-r--r--libssh/connect.c9
-rw-r--r--libssh/init.c13
-rw-r--r--libssh/keyfiles.c26
-rw-r--r--libssh/messages.c17
-rw-r--r--libssh/server.c12
-rw-r--r--libssh/sftp.c1
-rw-r--r--libssh/string.c9
12 files changed, 162 insertions, 71 deletions
diff --git a/libssh/auth1.c b/libssh/auth1.c
index 7844d9ba..3a40aef2 100644
--- a/libssh/auth1.c
+++ b/libssh/auth1.c
@@ -51,7 +51,7 @@ static int send_username(SSH_SESSION *session, char *username){
STRING *user;
/* returns SSH_AUTH_SUCCESS or SSH_AUTH_DENIED */
if(session->auth_service_asked)
- return session->auth_service_asked;
+ return session->auth_service_asked;
buffer_add_u8(session->out_buffer,SSH_CMSG_USER);
if(!username)
if(!(username=session->options->username)){
@@ -112,6 +112,9 @@ int ssh_userauth_offer_pubkey(SSH_SESSION *session, char *username,int type, STR
return err;
}
*/
+/** \internal
+ * \todo implement ssh1 public key
+ */
int ssh_userauth1_offer_pubkey(SSH_SESSION *session, char *username, int type,
STRING *pubkey){
return SSH_AUTH_DENIED;
@@ -138,8 +141,8 @@ int ssh_userauth_pubkey(SSH_SESSION *session, char *username, STRING *publickey,
service=string_from_char("ssh-connection");
method=string_from_char("publickey");
algo=string_from_char(ssh_type_to_char(privatekey->type));
-
-
+
+
*/ /* we said previously the public key was accepted */
/* packet_clear_out(session);
buffer_add_u8(session->out_buffer,SSH2_MSG_USERAUTH_REQUEST);
@@ -196,7 +199,7 @@ int ssh_userauth1_password(SSH_SESSION *session,char *username,char *password){
string_burn(password_s);
free(password_s);
packet_send(session);
- return wait_auth1_status(session);
+ return wait_auth1_status(session);
}
#endif /* HAVE_SSH1 */
diff --git a/libssh/base64.c b/libssh/base64.c
index f16be600..e8d723a6 100644
--- a/libssh/base64.c
+++ b/libssh/base64.c
@@ -44,8 +44,12 @@ static int get_equals(char *string);
/* first part : base 64 to binary */
-/* base64_to_bin translates a base64 string into a binary one. important, if something went wrong (ie incorrect char)*/
-/* it returns NULL */
+/** \brief base64_to_bin translates a base64 string into a binary one. important,
+ * \returns NULL if something went wrong (ie incorrect char)
+ * \returns BUFFER containing the decoded string
+ * \internal
+ */
+
BUFFER *base64_to_bin(char *source){
int len;
int equals;
@@ -120,7 +124,7 @@ BUFFER *base64_to_bin(char *source){
}
return NULL;
}
-
+
#define BLOCK(letter,n) do { ptr=strchr(alphabet,source[n]);\
if(!ptr) return -1;\
i=ptr-alphabet;\
@@ -144,7 +148,7 @@ static int to_block4(unsigned long *block, char *source,int num){
return 0;
}
-/* num = numbers of final bytes to be decoded */
+/* num = numbers of final bytes to be decoded */
static int _base64_to_bin(unsigned char dest[3], char *source,int num){
unsigned long block;
if(to_block4(&block,source,num))
@@ -164,7 +168,7 @@ static int get_equals(char *string){
*ptr=0;
ptr++;
}
-
+
return num;
}
@@ -181,18 +185,21 @@ static void _bin_to_base64(unsigned char *dest, unsigned char source[3], int len
case 2:
dest[0]=alphabet[source[0]>>2];
dest[1]=alphabet[(source[1]>>4) | ((source[0] & BITS(2)) << 4)];
- dest[2]=alphabet[(source[1]&BITS(4)) << 2];
+ dest[2]=alphabet[(source[1]&BITS(4)) << 2];
dest[3]='=';
break;
case 3:
- dest[0]=alphabet[(source[0]>>2)];
+ dest[0]=alphabet[(source[0]>>2)];
dest[1]=alphabet[(source[1]>>4) | ((source[0] & BITS(2)) << 4)];
- dest[2]=alphabet[ (source[2] >> 6) | (source[1]&BITS(4)) << 2];
+ dest[2]=alphabet[ (source[2] >> 6) | (source[1]&BITS(4)) << 2];
dest[3]=alphabet[source[2]&BITS(6)];
break;
}
}
-
+/** \brief Converts binary data to a base64 string
+ * \returns the converted string
+ * \internal
+ */
unsigned char *bin_to_base64(unsigned char *source, int len){
int flen=len + (3 - (len %3)); /* round to upper 3 multiple */
unsigned char *buffer;
diff --git a/libssh/buffer.c b/libssh/buffer.c
index d51a826a..60eceef2 100644
--- a/libssh/buffer.c
+++ b/libssh/buffer.c
@@ -39,7 +39,7 @@ BUFFER *buffer_new(){
return buffer;
}
-/** \brief desallocate a buffer
+/** \brief deallocate a buffer
* \param buffer buffer to free
*/
void buffer_free(BUFFER *buffer){
@@ -90,19 +90,36 @@ void buffer_add_data(BUFFER *buffer,const void *data,int len){
buffer->used+=len;
}
+/** \internal
+ * \brief add a SSH string to the tail of buffer
+ * \param buffer buffer
+ * \param string SSH String to add
+ */
void buffer_add_ssh_string(BUFFER *buffer,STRING *string){
u32 len=ntohl(string->size);
buffer_add_data(buffer,string,len+sizeof(u32));
}
-
+/** \internal
+ * \brief add a 32 bits unsigned integer to the tail of buffer
+ * \param buffer buffer
+ * \param data 32 bits integer
+ */
void buffer_add_u32(BUFFER *buffer,u32 data){
buffer_add_data(buffer,&data,sizeof(data));
}
-
+/** \internal
+ * \brief add a 64 bits unsigned integer to the tail of buffer
+ * \param buffer buffer
+ * \param data 64 bits integer
+ */
void buffer_add_u64(BUFFER *buffer,u64 data){
buffer_add_data(buffer,&data,sizeof(data));
}
-
+/** \internal
+ * \brief add a 8 bits unsigned integer to the tail of buffer
+ * \param buffer buffer
+ * \param data 8 bits integer
+ */
void buffer_add_u8(BUFFER *buffer,u8 data){
buffer_add_data(buffer,&data,sizeof(u8));
}
@@ -203,6 +220,14 @@ int buffer_pass_bytes_end(BUFFER *buffer,int len){
return len;
}
+/** \internal
+ * \brief gets remaining data out of the buffer. Adjust the read pointer.
+ * \param buffer Buffer to read
+ * \param data data buffer where to store the data
+ * \param len length to read from the buffer
+ * \returns 0 if there is not enough data in buffer
+ * \returns len otherwise.
+ */
int buffer_get_data(BUFFER *buffer, void *data, int len){
if(buffer->pos+len>buffer->used)
return 0; /*no enough data in buffer */
@@ -210,19 +235,43 @@ int buffer_get_data(BUFFER *buffer, void *data, int len){
buffer->pos+=len;
return len; /* no yet support for partial reads (is it really needed ?? ) */
}
-
+/** \internal
+ * \brief gets a 8 bits unsigned int out of the buffer. Adjusts the read pointer.
+ * \param buffer Buffer to read
+ * \param data pointer to a u8 where to store the data
+ * \returns 0 if there is not enough data in buffer
+ * \returns 1 otherwise.
+ */
int buffer_get_u8(BUFFER *buffer, u8 *data){
return buffer_get_data(buffer,data,sizeof(u8));
}
+/** \internal
+ * \brief gets a 32 bits unsigned int out of the buffer. Adjusts the read pointer.
+ * \param buffer Buffer to read
+ * \param data pointer to a u32 where to store the data
+ * \returns 0 if there is not enough data in buffer
+ * \returns 4 otherwise.
+ */
int buffer_get_u32(BUFFER *buffer, u32 *data){
return buffer_get_data(buffer,data,sizeof(u32));
}
-
+/** \internal
+ * \brief gets a 64 bits unsigned int out of the buffer. Adjusts the read pointer.
+ * \param buffer Buffer to read
+ * \param data pointer to a u64 where to store the data
+ * \returns 0 if there is not enough data in buffer
+ * \returns 8 otherwise.
+ */
int buffer_get_u64(BUFFER *buffer, u64 *data){
return buffer_get_data(buffer,data,sizeof(u64));
}
-
+/** \internal
+ * \brief gets a SSH String out of the buffer. Adjusts the read pointer.
+ * \param buffer Buffer to read
+ * \returns The SSH String read
+ * \returns NULL otherwise.
+ */
STRING *buffer_get_ssh_string(BUFFER *buffer){
u32 stringlen;
u32 hostlen;
@@ -241,8 +290,14 @@ STRING *buffer_get_ssh_string(BUFFER *buffer){
}
return str;
}
+/** \internal
+ * \brief gets a mpint out of the buffer. Adjusts the read pointer.
+ * SSH-1 only
+ * \param buffer Buffer to read
+ * \returns the SSH String containing the mpint
+ * \returns NULL otherwise
+ */
-/* this one is SSH-1 only */
STRING *buffer_get_mpint(BUFFER *buffer){
u16 bits;
u32 len;
diff --git a/libssh/channels.c b/libssh/channels.c
index 3a03e236..d39f919a 100644
--- a/libssh/channels.c
+++ b/libssh/channels.c
@@ -382,7 +382,7 @@ void channel_default_bufferize(CHANNEL *channel, void *data, int len, int is_std
}
}
-/** \brief open a session channel (suited for a shell. Not tcp)
+/** \brief open a session channel (suited for a shell. Not tcp Forwarding)
* \param channel an allocated channel (see channel_new())
* \return SSH_OK on success\n
* SSH_ERROR on error
@@ -401,7 +401,7 @@ int channel_open_session(CHANNEL *channel){
else
return channel_open_session1(channel);
#endif
-}
+}
/** \brief open a TCP/IP forwarding channel.
* \param channel an allocated channel (see channel_new())
@@ -461,7 +461,7 @@ void channel_free(CHANNEL *channel){
leave_function();
}
-/** it doesn't close the channel. You may still read from it but not write.
+/** it doesn't close the channel. You may still read from it but not write.
* \brief send an end of file on the channel
* \param channel channel
* \return SSH_ERROR on error\n
@@ -723,7 +723,7 @@ int channel_change_pty_size(CHANNEL *channel,int cols,int rows){
buffer_free(buffer);
leave_function();
return err;
-}
+}
/** \brief requests a shell
* \param channel
@@ -756,7 +756,7 @@ int channel_request_subsystem(CHANNEL *channel, char *system){
buffer_free(buffer);
return ret;
}
-
+
int channel_request_sftp( CHANNEL *channel){
return channel_request_subsystem(channel, "sftp");
}
@@ -835,9 +835,9 @@ int channel_read(CHANNEL *channel, BUFFER *buffer,int bytes,int is_stderr){
/* maybe i should always set a buffer to avoid races between channel_default_bufferize and channel_read */
if(is_stderr)
stdbuf=channel->stderr_buffer;
- else
+ else
stdbuf=channel->stdout_buffer;
-
+
/* We may have problem if the window is too small to accept as much data as asked */
ssh_log(session,SSH_LOG_PROTOCOL,"Read (%d) buffered : %d bytes. Window: %d",bytes,buffer_get_rest_len(stdbuf),channel->local_window);
if(bytes > buffer_get_rest_len(stdbuf) + channel->local_window)
@@ -890,9 +890,9 @@ int channel_poll(CHANNEL *channel, int is_stderr){
enter_function();
if(is_stderr)
buffer=channel->stderr_buffer;
- else
+ else
buffer=channel->stdout_buffer;
-
+
while(buffer_get_rest_len(buffer)==0 && !channel->remote_eof){
r=ssh_handle_packets(channel->session);
if(r<=0)
@@ -918,7 +918,7 @@ int channel_poll(CHANNEL *channel, int is_stderr){
* \return number of bytes read\n
* 0 if nothing is available\n
* SSH_ERROR on error
- * \warning don't forget to check for EOF as it would
+ * \warning don't forget to check for EOF as it would
* return 0 here
* \see channel_is_eof()
*/
@@ -1015,7 +1015,7 @@ static int count_ptrs(CHANNEL **ptrs){
* \return SSH_SUCCESS operation successful\n
* SSH_EINTR select(2) syscall was interrupted, relaunch the function
*/
-int channel_select(CHANNEL **readchans, CHANNEL **writechans, CHANNEL **exceptchans, struct
+int channel_select(CHANNEL **readchans, CHANNEL **writechans, CHANNEL **exceptchans, struct
timeval * timeout){
fd_set rset;
fd_set wset;
diff --git a/libssh/client.c b/libssh/client.c
index c1dc6daf..f2f2f2b8 100644
--- a/libssh/client.c
+++ b/libssh/client.c
@@ -87,10 +87,9 @@ int ssh_analyze_banner(SSH_SESSION *session, int *ssh1, int *ssh2){
return 0;
}
-/* ssh_send_banner sends a SSH banner to the server */
-/* TODO select a banner compatible with server version */
-/* switch SSH1/1.5/2 */
-/* and quit when the server is SSH1 only */
+/** \internal
+ * \brief ssh_send_banner sends a SSH banner to the server
+ */
int ssh_send_banner(SSH_SESSION *session,int server){
char *banner;
@@ -269,12 +268,12 @@ int ssh_connect(SSH_SESSION *session){
ssh_set_error(session,SSH_FATAL,"Hostname required");
leave_function();
return SSH_ERROR;
- }
+ }
if(options->fd != -1)
fd=options->fd;
else
fd=ssh_connect_host(session,options->host,options->bindaddr,options->port,
- options->timeout,options->timeout_usec);
+ options->timeout,options->timeout_usec);
if(fd<0){
leave_function();
return -1;
@@ -336,7 +335,7 @@ int ssh_connect(SSH_SESSION *session){
session->alive=0;
leave_function();
return -1;
- }
+ }
set_status(options,1.0);
session->connected=1;
break;
@@ -349,14 +348,14 @@ int ssh_connect(SSH_SESSION *session){
}
set_status(options,0.6);
session->connected=1;
- break;
+ break;
}
leave_function();
return 0;
}
/** this is the banner showing a disclaimer to users who log in,
- * typicaly their right or the fact that they will be monitored
+ * typically their right or the fact that they will be monitored
* \brief get the issue banner from the server
* \param session ssh session
* \return NULL if there is no issue banner, else a string containing it.
diff --git a/libssh/connect.c b/libssh/connect.c
index c96200d2..1a9a9d8a 100644
--- a/libssh/connect.c
+++ b/libssh/connect.c
@@ -136,9 +136,12 @@ int ssh_connect_ai_timeout(SSH_SESSION *session, const char *host, int port, str
return s;
}
-/* connect_host connects to an IPv4 (or IPv6) host */
-/* specified by its IP address or hostname. */
-/* output is the file descriptor, <0 if failed. */
+/** \internal
+ * \brief connect_host connects to an IPv4 (or IPv6) host
+ * specified by its IP address or hostname.
+ * \returns file descriptor
+ * \returns less than 0 value
+ */
socket_t ssh_connect_host(SSH_SESSION *session, const char *host, const char
*bind_addr, int port,long timeout, long usec){
diff --git a/libssh/init.c b/libssh/init.c
index 5a242844..1b48a407 100644
--- a/libssh/init.c
+++ b/libssh/init.c
@@ -25,7 +25,14 @@ MA 02111-1307, USA. */
#ifdef _WIN32
#include <winsock2.h>
#endif
-
+/**
+ * \addtogroup ssh_session
+ * @{
+ */
+/**
+ * \brief finalize and cleanup all libssh and cryptographic data structures
+ * \returns 0
+ */
int ssh_finalize()
{
ssh_crypto_finalize();
@@ -39,3 +46,7 @@ int ssh_finalize()
#endif
return 0;
}
+
+/**
+ * @}
+ */
diff --git a/libssh/keyfiles.c b/libssh/keyfiles.c
index 8a2c4985..eb876059 100644
--- a/libssh/keyfiles.c
+++ b/libssh/keyfiles.c
@@ -93,7 +93,7 @@ u32 asn1_get_len(BUFFER *buffer)
{
u32 len;
unsigned char tmp[4];
-
+
if (!buffer_get_data(buffer,tmp,1))
return 0;
if (tmp[0] > 127)
@@ -115,7 +115,7 @@ STRING *asn1_get_int(BUFFER *buffer)
STRING *ret;
unsigned char type;
u32 size;
-
+
if (!buffer_get_data(buffer,&type,1) || type != ASN1_INTEGER)
return NULL;
size=asn1_get_len(buffer);
@@ -201,7 +201,7 @@ int privatekey_decrypt(int algo, int mode, unsigned int key_len,
unsigned char key[MAX_KEY_SIZE];
unsigned char *tmp;
gcry_error_t err;
-
+
if (!algo)
return 1;
passphrase_len=cb(passphrase, MAX_PASSPHRASE_SIZE, 0, desc);
@@ -221,12 +221,12 @@ int privatekey_decrypt(int algo, int mode, unsigned int key_len,
memcpy(buffer_get(data), tmp, buffer_get_len(data));
gcry_cipher_close(cipher);
return 1;
-}
+}
int privatekey_dek_header(char *header, unsigned int header_len, int *algo, int *mode, unsigned int *key_len, unsigned char **iv, unsigned int *iv_len)
{
unsigned int iv_pos;
-
+
if (header_len > 13 && !strncmp("DES-EDE3-CBC", header, 12))
{
*algo = GCRY_CIPHER_3DES;
@@ -376,7 +376,7 @@ int read_rsa_privatekey(FILE *fp, gcry_sexp_t *r,
STRING *u;
STRING *v;
BUFFER *buffer;
-
+
if (!(buffer=privatekey_file_to_buffer(fp, TYPE_RSA, cb, desc)))
return 0;
if (!asn1_check_sequence(buffer))
@@ -423,7 +423,7 @@ int read_dsa_privatekey(FILE *fp, gcry_sexp_t *r, int cb(char *, int , int , cha
STRING *x;
STRING *v;
BUFFER *buffer;
-
+
if (!(buffer=privatekey_file_to_buffer(fp, TYPE_DSS, cb, desc)))
return 0;
if (!asn1_check_sequence(buffer))
@@ -554,8 +554,8 @@ PRIVATE_KEY *privatekey_from_file(SSH_SESSION *session,char *filename,int type,
} else {
ssh_set_error(session,SSH_FATAL,"Invalid private key type %d",type);
return NULL;
- }
-
+ }
+
privkey=malloc(sizeof(PRIVATE_KEY));
privkey->type=type;
privkey->dsa_priv=dsa;
@@ -623,7 +623,7 @@ PRIVATE_KEY *_privatekey_from_file(void *session,char *filename,int type){
return privkey;
}
-/** \brief Desallocate a private key
+/** \brief deallocate a private key
* \param prv a PRIVATE_KEY object
*/
void private_key_free(PRIVATE_KEY *prv){
@@ -731,7 +731,7 @@ STRING *publickey_from_next_file(SSH_SESSION *session,char **pub_keys_path,char
if(!ssh_file_readaccess_ok(public)){
ssh_log(session,SSH_LOG_PACKET,"Failed");
return publickey_from_next_file(session,pub_keys_path,keys_path,privkeyfile,type,count);
- }
+ }
snprintf(private,256,priv,home);
ssh_log(session,SSH_LOG_PACKET,"Trying to open private key %s",private);
if(!ssh_file_readaccess_ok(private)){
@@ -812,7 +812,7 @@ static char **ssh_parse_knownhost(char *filename, char *hostname, char *type){
/* we allow spaces or ',' to follow the hostname. It's generaly an IP */
/* we don't care about ip, if the host key match there is no problem with ip */
if(strncasecmp(ptr,hostname,strlen(hostname))==0){
- if(ptr[strlen(hostname)]==' ' || ptr[strlen(hostname)]=='\0'
+ if(ptr[strlen(hostname)]==' ' || ptr[strlen(hostname)]=='\0'
|| ptr[strlen(hostname)]==','){
if(strcasecmp(found_type, type)==0){
fclose(file);
@@ -929,7 +929,7 @@ int ssh_is_server_known(SSH_SESSION *session){
return SSH_SERVER_KNOWN_OK;
}
-/** You generaly use it when ssh_is_server_known() answered SSH_SERVER_NOT_KNOWN
+/** You generaly use it when ssh_is_server_known() answered SSH_SERVER_NOT_KNOWN
* \brief write the current server as known in the known hosts file
* \param session ssh session
* \return 0 on success, -1 on error
diff --git a/libssh/messages.c b/libssh/messages.c
index e9c99b1a..c70a56e0 100644
--- a/libssh/messages.c
+++ b/libssh/messages.c
@@ -18,13 +18,16 @@ You should have received a copy of the GNU Lesser General Public License
along with the SSH Library; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA. */
-
-/* this file contains the Message parsing utilities for server programs using
- * libssh. The main loop of the program will call ssh_message_get(session) to
+/** \defgroup ssh_messages SSH Messages
+ * this file contains the Message parsing utilities for server programs using
+ * libssh. The main loop of the program will call ssh_message_get(session) to
* get messages as they come. they are not 1-1 with the protocol messages.
* then, the user will know what kind of a message it is and use the appropriate
* functions to handle it (or use the default handlers if she doesn't know what to
- * do */
+ * do
+ * \addtogroup ssh_messages
+ * @{
+ */
#include <string.h>
#include <stdlib.h>
@@ -143,7 +146,7 @@ static int ssh_message_auth_reply_default(SSH_MESSAGE *msg,int partial){
strcat(methods_c,"password,");
if(session->auth_methods & SSH_AUTH_HOSTBASED)
strcat(methods_c,"hostbased,");
- methods_c[strlen(methods_c)-1]=0; // strip the comma. We are sure there is at
+ methods_c[strlen(methods_c)-1]=0; // strip the comma. We are sure there is at
// least one word into the list
ssh_say(2,"Sending a auth failure. methods that can continue : %s\n",methods_c);
methods=string_from_char(methods_c);
@@ -296,7 +299,7 @@ static SSH_MESSAGE *handle_channel_request(SSH_SESSION *session){
leave_function();
return msg;
}
-
+
msg->channel_request.type=SSH_CHANNEL_UNKNOWN;
free(type_c);
leave_function();
@@ -444,3 +447,5 @@ void ssh_message_free(SSH_MESSAGE *msg){
}
memset(msg,0,sizeof(*msg));
}
+/** @}
+ */
diff --git a/libssh/server.c b/libssh/server.c
index 538ec80a..59ffcd76 100644
--- a/libssh/server.c
+++ b/libssh/server.c
@@ -19,8 +19,11 @@ along with the SSH Library; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA. */
-/* from times to times, you need to serve your friends */
-/* and, perhaps, ssh connections. */
+/**
+ * \defgroup ssh_server SSH Server
+ * \addtogroup ssh_server
+ * @{
+ */
#include <fcntl.h>
#include <unistd.h>
@@ -63,7 +66,7 @@ static socket_t bind_socket(SSH_BIND *ssh_bind,char *hostname, int port) {
close(s);
return -1;
}
-
+
memset(&myaddr, 0, sizeof(myaddr));
memcpy(&myaddr.sin_addr,hp->h_addr,hp->h_length);
myaddr.sin_family=hp->h_addrtype;
@@ -296,4 +299,5 @@ int ssh_accept(SSH_SESSION *session){
session->connected=1;
return 0;
}
-
+/** @}
+ */
diff --git a/libssh/sftp.c b/libssh/sftp.c
index 48d2c6ee..9b109e9e 100644
--- a/libssh/sftp.c
+++ b/libssh/sftp.c
@@ -23,6 +23,7 @@ MA 02111-1307, USA. */
/** \defgroup ssh_sftp SFTP functions
* \brief SFTP handling functions
+ * \bug Write docs !
*/
/** \addtogroup ssh_sftp
* @{ */
diff --git a/libssh/string.c b/libssh/string.c
index fc730a48..18ad0dbb 100644
--- a/libssh/string.c
+++ b/libssh/string.c
@@ -28,7 +28,7 @@ MA 02111-1307, USA. */
/** \addtogroup ssh_string
* @{ */
-/**
+/**
* \brief Creates a new SSH String object
* \param size size of the string
* \return the newly allocated string
@@ -71,7 +71,7 @@ int string_len(STRING *str){
* \brief convert a SSH string to a C nul-terminated string
* \param str the input SSH string
* \return a malloc'ed string pointer.
- * \warning If the input SSH string contains zeroes, some parts of
+ * \warning If the input SSH string contains zeroes, some parts of
* the output string may not be readable with regular libc functions.
*/
char *string_to_char(STRING *str){
@@ -89,6 +89,9 @@ STRING *string_copy(STRING *str){
return ret;
}
+/** \brief destroy data in a string so it couldn't appear in a core dump
+ * \param s string to burn
+ */
void string_burn(STRING *s){
memset(s->string,'X',string_len(s));
}
@@ -98,7 +101,7 @@ void *string_data(STRING *s){
}
/**
- * \brief desallocate a STRING object
+ * \brief deallocate a STRING object
* \param s String to delete
*/
void string_free(STRING *s){