Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
John McEleney
/
mailutils
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
Commit
3e158c93
...
3e158c932500f9ddb94a5e0fddfb6bc8e1615cbe
authored
2001-05-17 03:12:55 +0000
by
Alain Magloire
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
Dave latest patch
1 parent
dff80b59
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
38 additions
and
32 deletions
ChangeLog
doc/auth.texi
imap4d/util.c
mailbox/include/mime0.h
mailbox/mbx_mbox.c
mailbox/mime.c
ChangeLog
View file @
3e158c9
2001-05-16 Dave Inglis
* mailbox/mime.c (_mime_parse_mpart): Better check for the
boundary.
2001-05-14 Sergey Poznyakoff
* pop3d/user.c: After unsuccessful authorization frees cmd twice,
...
...
@@ -116,7 +121,7 @@
* pop3d/user.c: Cast the return of crypt(), since in may not be
declare in <unistd.h>.
* lib/snprintf.c: Use only __STDC__ to detect <stdar.h>
* lib/snprintf.c: Use only __STDC__ to detect <stdar
g
.h>
* lib/snprintf.h: Use only __STDC__.
* mail/mail.h: The global variable should be declare extern.
...
...
doc/auth.texi
View file @
3e158c9
There
are
many
ways
to
authenticate
to
a
server
,
to
be
flexible
the
authentication
process
is
provided
by
two
objects
@code
{
auth_t
}
and
@{
ticket_t
}.
The
@{
auth_t
}
can
implement
different
protocol
like
APOP
,
MD5
-
AUTH
,
One
Time
Passwd
etc
..
By
default
if
a
mailbox
does
not
understand
or
know
how
to
authenticate
it
falls
back
to
user
/
passwd
authentication
.
The
@{
ticket_t
}
is
away
to
Mailboxes
and
Mailers
provide
a
way
to
authenticate
when
the
URL
does
not
contain
enough
information
.
The
default
action
is
to
call
function
@code
{
auth_authenticate
}
who
will
get
the
@emph
{
user
}
and
@emph
{
passwd
}
...
...
imap4d/util.c
View file @
3e158c9
...
...
@@ -489,7 +489,7 @@ imap4d_readline (FILE *fp)
}
}
while
(
number
>
0
);
/* syslog (LOG_INFO, "readline: %s", line); */
/* syslog (LOG_INFO, "readline: %s", line);
*/
return
line
;
}
...
...
mailbox/include/mime0.h
View file @
3e158c9
/* GNU mailutils - a suite of utilities for electronic mail
Copyright (C) 1999, 2000
, 2001
Free Software Foundation, Inc.
Copyright (C) 1999, 2000 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Library General Public License as published by
...
...
@@ -60,12 +60,12 @@ struct _mime
{
message_t
msg
;
header_t
hdrs
;
/*stream_t stream; */
stream_t
stream
;
int
flags
;
char
*
content_type
;
int
tparts
;
int
nmtp_parts
;
int
nmtp_parts
;
struct
_mime_part
**
mtp_parts
;
/* list of parts in the msg */
char
*
boundary
;
int
cur_offset
;
...
...
@@ -73,8 +73,8 @@ struct _mime
int
part_offset
;
int
boundary_len
;
int
preamble
;
int
postamble
;
/* parser state */
int
postamble
;
/* parser state */
char
*
cur_line
;
int
line_ndx
;
char
*
cur_buf
;
...
...
@@ -92,6 +92,7 @@ struct _mime_part
{
mime_t
mime
;
message_t
msg
;
int
body_created
;
int
offset
;
size_t
len
;
size_t
lines
;
...
...
mailbox/mbx_mbox.c
View file @
3e158c9
...
...
@@ -408,6 +408,7 @@ mbox_close (mailbox_t mailbox)
/* Make sure that we do not hold any file locking. */
locker_unlock
(
mailbox
->
locker
);
#if 0
monitor_wrlock (mailbox->monitor);
/* Before closing we need to remove all the messages
- to reclaim the memory
...
...
@@ -434,6 +435,7 @@ mbox_close (mailbox_t mailbox)
mud->uidvalidity = 0;
mud->uidnext = 0;
monitor_unlock (mailbox->monitor);
#endif
return
stream_close
(
mailbox
->
stream
);
}
...
...
mailbox/mime.c
View file @
3e158c9
...
...
@@ -208,7 +208,7 @@ _mime_setup_buffers(mime_t mime)
if
(
mime
->
cur_buf
==
NULL
&&
(
mime
->
cur_buf
=
malloc
(
mime
->
buf_size
)
)
==
NULL
)
{
return
ENOMEM
;
}
if
(
mime
->
cur_line
==
NULL
&&
(
mime
->
cur_line
=
malloc
(
MIME_MAX_HDR_LEN
)
)
==
NULL
)
{
if
(
mime
->
cur_line
==
NULL
&&
(
mime
->
cur_line
=
calloc
(
MIME_MAX_HDR_LEN
,
1
)
)
==
NULL
)
{
free
(
mime
->
cur_buf
);
return
ENOMEM
;
}
...
...
@@ -235,8 +235,6 @@ _mime_parse_mpart_message(mime_t mime)
char
*
cp
,
*
cp2
;
int
blength
,
mb_length
,
mb_offset
,
mb_lines
,
ret
;
size_t
nbytes
;
body_t
body
;
stream_t
stream
;
if
(
!
(
mime
->
flags
&
MIME_PARSER_ACTIVE
)
)
{
char
*
boundary
;
...
...
@@ -258,12 +256,9 @@ _mime_parse_mpart_message(mime_t mime)
mb_length
=
mime
->
body_length
;
mb_offset
=
mime
->
body_offset
;
mb_lines
=
mime
->
body_lines
;
blength
=
strlen
(
mime
->
boundary
);
body
=
NULL
;
stream
=
NULL
;
message_get_body
(
mime
->
msg
,
&
body
);
body_get_stream
(
body
,
&
stream
);
while
(
(
ret
=
stream_read
(
stream
,
mime
->
cur_buf
,
mime
->
buf_size
,
mime
->
cur_offset
,
&
nbytes
)
)
==
0
&&
nbytes
)
{
while
(
(
ret
=
stream_read
(
mime
->
stream
,
mime
->
cur_buf
,
mime
->
buf_size
,
mime
->
cur_offset
,
&
nbytes
)
)
==
0
&&
nbytes
)
{
cp
=
mime
->
cur_buf
;
while
(
nbytes
)
{
mime
->
cur_line
[
mime
->
line_ndx
]
=
*
cp
;
...
...
@@ -276,7 +271,6 @@ _mime_parse_mpart_message(mime_t mime)
break
;
case
MIME_STATE_SCAN_BOUNDARY
:
cp2
=
mime
->
cur_line
[
0
]
==
'\n'
?
mime
->
cur_line
+
1
:
mime
->
cur_line
;
blength
=
strlen
(
mime
->
boundary
);
if
(
mime
->
header_length
)
mb_lines
++
;
if
(
mime
->
line_ndx
>=
blength
)
{
...
...
@@ -287,8 +281,10 @@ _mime_parse_mpart_message(mime_t mime)
mb_length
=
mime
->
cur_offset
-
mb_offset
-
mime
->
line_ndx
+
1
;
if
(
mime
->
header_length
)
/* this skips the preamble */
_mime_append_part
(
mime
,
NULL
,
mb_offset
,
mb_length
,
mb_lines
);
if
(
(
cp2
+
blength
+
2
<
cp
&&
!
strncasecmp
(
cp2
+
blength
,
"--"
,
2
)
)
||
!
strncasecmp
(
cp2
+
blength
+
2
,
"--"
,
2
)
)
{
/* very last boundary */
if
(
(
&
mime
->
cur_line
[
mime
->
line_ndx
]
-
cp2
-
1
>
blength
&&
!
strncasecmp
(
cp2
+
blength
+
2
,
"--"
,
2
)
)
||
(
&
mime
->
cur_line
[
mime
->
line_ndx
]
-
cp2
-
1
==
blength
&&
!
strncasecmp
(
cp2
+
blength
,
"--"
,
2
)
)
)
{
/* last boundary */
mime
->
parser_state
=
MIME_STATE_BEGIN_LINE
;
mime
->
header_length
=
0
;
break
;
...
...
@@ -353,11 +349,7 @@ _mimepart_body_read(stream_t stream, char *buf, size_t buflen, off_t off, size_t
return
0
;
read_len
=
(
buflen
<=
read_len
)
?
buflen
:
read_len
;
body
=
NULL
;
stream
=
NULL
;
message_get_body
(
mime_part
->
mime
->
msg
,
&
body
);
body_get_stream
(
body
,
&
stream
);
return
stream_read
(
stream
,
buf
,
read_len
,
mime_part
->
offset
+
off
,
nbytes
);
return
stream_read
(
mime_part
->
mime
->
stream
,
buf
,
read_len
,
mime_part
->
offset
+
off
,
nbytes
);
}
static
int
...
...
@@ -367,11 +359,7 @@ _mimepart_body_fd(stream_t stream, int *fd)
message_t
msg
=
body_get_owner
(
body
);
struct
_mime_part
*
mime_part
=
message_get_owner
(
msg
);
body
=
NULL
;
stream
=
NULL
;
message_get_body
(
mime_part
->
mime
->
msg
,
&
body
);
body_get_stream
(
body
,
&
stream
);
return
stream_get_fd
(
stream
,
fd
);
return
stream_get_fd
(
mime_part
->
mime
->
stream
,
fd
);
}
static
int
...
...
@@ -412,7 +400,7 @@ _mime_set_content_type(mime_t mime)
/* Delayed the creation of the header 'til they create the final message via
mime_get_message() */
if
(
mime
->
hdrs
==
NULL
)
return
0
;
return
0
;
if
(
mime
->
nmtp_parts
>
1
)
{
if
(
mime
->
flags
&
MIME_ADDED_MULTIPART_CT
)
return
0
;
...
...
@@ -594,6 +582,7 @@ mime_create(mime_t *pmime, message_t msg, int flags)
mime_t
mime
=
NULL
;
int
ret
=
0
;
size_t
size
;
body_t
body
;
if
(
pmime
==
NULL
)
return
EINVAL
;
...
...
@@ -615,6 +604,8 @@ mime_create(mime_t *pmime, message_t msg, int flags)
if
(
ret
==
0
)
{
mime
->
msg
=
msg
;
mime
->
buf_size
=
MIME_DFLT_BUF_SIZE
;
message_get_body
(
msg
,
&
body
);
body_get_stream
(
body
,
&
(
mime
->
stream
));
}
}
}
...
...
@@ -686,7 +677,7 @@ mime_get_part(mime_t mime, size_t part, message_t *msg)
*
msg
=
mime
->
msg
;
else
{
mime_part
=
mime
->
mtp_parts
[
part
-
1
];
if
(
(
ret
=
body_create
(
&
body
,
mime_part
->
msg
)
)
==
0
)
{
if
(
!
mime_part
->
body_created
&&
(
ret
=
body_create
(
&
body
,
mime_part
->
msg
)
)
==
0
)
{
body_set_size
(
body
,
_mimepart_body_size
,
mime_part
->
msg
);
body_set_lines
(
body
,
_mimepart_body_lines
,
mime_part
->
msg
);
if
(
(
ret
=
stream_create
(
&
stream
,
MU_STREAM_READ
,
body
)
)
==
0
)
{
...
...
@@ -694,10 +685,10 @@ mime_get_part(mime_t mime, size_t part, message_t *msg)
stream_set_fd
(
stream
,
_mimepart_body_fd
,
body
);
body_set_stream
(
body
,
stream
,
mime_part
->
msg
);
message_set_body
(
mime_part
->
msg
,
body
,
mime_part
);
*
msg
=
mime_part
->
msg
;
return
0
;
mime_part
->
body_created
=
1
;
}
}
*
msg
=
mime_part
->
msg
;
}
}
return
ret
;
...
...
@@ -764,6 +755,7 @@ mime_get_message(mime_t mime, message_t *msg)
}
}
message_destroy
(
&
(
mime
->
msg
),
mime
);
mime
->
msg
=
NULL
;
}
}
if
(
ret
==
0
)
...
...
Please
register
or
sign in
to post a comment