This patch removes a bunch of compiler warnings seen with Sun Forte.
Besides one 'statement not reachable' warning, the rest are
signed/unsigned conflicts. The real root of this stems from the fact
that apr_md5_* only deals with unsigned char*'s while everything else
in SVN only deals with char*s. (Does GCC ignore these warnings?)
Perhaps the bigger question is whether to somehow fix the apr_md5_*
API to take char*'s instead? I'm sort of on the fence here. Before
starting what will most likely be a painful discussion on dev@apr,
I'd like to see what you guys (namely Karl since he wrote most of the
checksum code that uses MD5) think first. What makes more sense?
Fixing SVN or fixing APR? -- justin
* subversion/libsvn_fs/reps-strings.c
(svn_fs__reps_contents, txn_body_read_rep, txn_body_write_rep,
svn_fs__rep_undeltify): Ensure strings sent to apr_md5_update are
unsigned
char *'s.
* subversion/libsvn_wc/props.c (svn_wc__conflicting_propchanges_p):
Remove code that is unreachable. (The answer to the comment is
'no.')
* subversion/libsvn_subr/svn_base64.c
(encode_baton): Make buf an unsigned char.
(encode_partial_group): Make extra an unsigned char.
(svn_base64_encode_string): Make ingroup an unsigned char.
(svn_base64_from_md5): Attempt to deal with signed/unsigned
mismatch by
removing some abstractions that only deal with 'char'
* subversion/tests/libsvn_fs/fs-test.c
(get_file_digest, file_integrity_helper, verify_checksum): Ensure
strings
sent to apr_md5_update are unsigned char *'s.
* subversion/tests/libsvn_repos/md5args.c (main): Ditto.
* subversion/libsvn_delta/text_delta.c
(svn_txdelta_next_window, apply_window): Ditto.
* subversion/libsvn_ra_dav/fetch.c
(get_file_reader): Ditto.
Index: subversion/libsvn_fs/reps-strings.c
===================================================================
--- subversion/libsvn_fs/reps-strings.c (revision 4481)
+++ subversion/libsvn_fs/reps-strings.c (working copy)
@@ -728,7 +728,7 @@
unsigned char checksum[MD5_DIGESTSIZE];
apr_md5_init (md5_context);
- apr_md5_update (md5_context, str-data, str-len);
+ apr_md5_update (md5_context, (unsigned char*)str-data,
str-len);
apr_md5_final (checksum, md5_context);
SVN_ERR (svn_fs__bdb_read_rep (rep, fs, rep_key, trail));
@@ -804,7 +804,8 @@
*/
if (! args-rb-checksum_finalized)
{
- apr_md5_update ((args-rb-md5_context), args-buf,
*(args-len));
+ apr_md5_update ((args-rb-md5_context), (unsigned
char*)args-buf,
+ *(args-len));
if (args-rb-offset == args-rb-size)
{
@@ -991,7 +992,8 @@
args-wb-txn_id,
trail));
- apr_md5_update ((args-wb-md5_context), args-buf, args-len);
+ apr_md5_update ((args-wb-md5_context), (unsigned
char*)args-buf,
+ args-len);
return SVN_NO_ERROR;
}
@@ -1567,7 +1569,7 @@
len = SVN_STREAM_CHUNK_SIZE;
SVN_ERR (svn_stream_read (source_stream, buf, len));
- apr_md5_update (context, buf, len);
+ apr_md5_update (context, (unsigned char*)buf, len);
len_read = len;
SVN_ERR (svn_stream_write (target_stream, buf, len));
if (len_read != len)
Index: subversion/libsvn_wc/props.c
===================================================================
--- subversion/libsvn_wc/props.c (revision 4481)
+++ subversion/libsvn_wc/props.c (working copy)
@@ -205,9 +205,6 @@
else
/* values are the same, so another implicit merge. */
return FALSE; /* no conflict */
-
- /* Default (will anyone ever reach this line?) */
- return FALSE; /* no conflict found */
}
Index: subversion/libsvn_subr/svn_base64.c
===================================================================
--- subversion/libsvn_subr/svn_base64.c (revision 4481)
+++ subversion/libsvn_subr/svn_base64.c (working copy)
@@ -40,7 +40,7 @@
struct encode_baton {
svn_stream_t *output;
- char buf[3]; /* Bytes waiting to be encoded */
+ unsigned char buf[3]; /* Bytes waiting to be encoded */
int buflen; /* Number of bytes waiting */
int linelen; /* Bytes output so far on this line
*/
apr_pool_t *pool;
@@ -99,8 +99,8 @@
/* Encode leftover data, if any, and possibly a final newline,
appending to STR. LEN must be in the range 0..2. */
static void
-encode_partial_group (svn_stringbuf_t *str, const char *extra, int
len,
- int linelen)
+encode_partial_group (svn_stringbuf_t *str, const unsigned char
*extra,
+ int len, int linelen)
{
unsigned char ingroup[3];
char outgroup[4];
@@ -184,7 +184,7 @@
svn_base64_encode_string (svn_stringbuf_t *str, apr_pool_t *pool)
{
svn_stringbuf_t *encoded = svn_stringbuf_create (, pool);
- char ingroup[3];
+ unsigned char ingroup[3];
int ingrouplen = 0, linelen = 0;
encode_bytes (encoded, str-data, str-len, ingroup, ingrouplen,
linelen);
@@ -333,10 +333,17 @@
svn_base64_from_md5 (unsigned char digest[], apr_pool_t *pool)
{
svn_stringbuf_t *md5str;
+ unsigned char ingroup[3];
+ int ingrouplen = 0, linelen = 0;
+
+ md5str = svn_stringbuf_create (, pool);
+ /* This cast is safe because we know encode_bytes does a memcpy and
+ * does an implicit unsigned char * cast.
+ */
+ encode_bytes (md5str, (char*)digest, MD5_DIGESTSIZE, ingroup,
ingrouplen,
+ linelen);
+ encode_partial_group (md5str, ingroup, ingrouplen, linelen);
- md5str = svn_stringbuf_ncreate (digest, MD5_DIGESTSIZE, pool);
- md5str = svn_base64_encode_string (md5str, pool);
-
/* Our base64-encoding routines append a final newline if any data
was created at all, so let's hack that off. */
if ((md5str)-len)
Index: subversion/tests/libsvn_fs/fs-test.c
===================================================================
--- subversion/tests/libsvn_fs/fs-test.c (revision 4481)
+++ subversion/tests/libsvn_fs/fs-test.c (working copy)
@@ -4271,7 +4271,7 @@
SVN_ERR (svn_stream_read (stream, buf, len));
/* Update the MD5 calculation with the data we just read. */
- apr_md5_update (context, buf, len);
+ apr_md5_update (context, (unsigned char*)buf, len);
} while (len == buf_size); /* Continue until a short read. */
@@ -4380,7 +4380,7 @@
SVN_ERR (svn_fs_txn_root (txn_root, txn, subpool));
SVN_ERR (svn_fs_make_file (txn_root, bigfile, subpool));
random_data_to_buffer (content_buffer, filesize, TRUE, seed);
- apr_md5 (digest, contents.data, contents.len);
+ apr_md5 (digest, (unsigned char*)contents.data, contents.len);
SVN_ERR (svn_fs_apply_textdelta
(wh_func, wh_baton, txn_root, bigfile, NULL, NULL,
subpool));
SVN_ERR (svn_txdelta_send_string (contents, wh_func, wh_baton,
subpool));
@@ -4394,7 +4394,7 @@
SVN_ERR (svn_fs_begin_txn (txn, fs, youngest_rev, subpool));
SVN_ERR (svn_fs_txn_root (txn_root, txn, subpool));
random_data_to_buffer (content_buffer, 20, TRUE, seed);
- apr_md5 (digest, contents.data, contents.len);
+ apr_md5 (digest, (unsigned char*)contents.data, contents.len);
SVN_ERR (svn_fs_apply_textdelta
(wh_func, wh_baton, txn_root, bigfile, NULL, NULL,
subpool));
SVN_ERR (svn_txdelta_send_string (contents, wh_func, wh_baton,
subpool));
@@ -4407,7 +4407,7 @@
SVN_ERR (svn_fs_begin_txn (txn, fs, youngest_rev, subpool));
SVN_ERR (svn_fs_txn_root (txn_root, txn, subpool));
random_data_to_buffer (content_buffer + (filesize - 20), 20, TRUE,
seed);
- apr_md5 (digest, contents.data, contents.len);
+ apr_md5 (digest, (unsigned char*)contents.data, contents.len);
SVN_ERR (svn_fs_apply_textdelta
(wh_func, wh_baton, txn_root, bigfile, NULL, NULL,
subpool));
SVN_ERR (svn_txdelta_send_string (contents, wh_func, wh_baton,
subpool));
@@ -4422,7 +4422,7 @@
SVN_ERR (svn_fs_txn_root (txn_root, txn, subpool));
random_data_to_buffer (content_buffer, 20, TRUE, seed);
random_data_to_buffer (content_buffer + (filesize - 20), 20, TRUE,
seed);
- apr_md5 (digest, contents.data, contents.len);
+ apr_md5 (digest, (unsigned char*)contents.data, contents.len);
SVN_ERR (svn_fs_apply_textdelta
(wh_func, wh_baton, txn_root, bigfile, NULL, NULL,
subpool));
SVN_ERR (svn_txdelta_send_string (contents, wh_func, wh_baton,
subpool));
@@ -4439,7 +4439,7 @@
SVN_ERR (svn_fs_begin_txn (txn, fs, youngest_rev, subpool));
SVN_ERR (svn_fs_txn_root (txn_root, txn, subpool));
random_data_to_buffer (content_buffer, filesize, FALSE, seed);
- apr_md5 (digest, contents.data, contents.len);
+ apr_md5 (digest, (unsigned char*)contents.data, contents.len);
SVN_ERR (svn_fs_apply_textdelta (wh_func, wh_baton, txn_root,
bigfile, NULL, NULL,
subpool));
SVN_ERR (svn_txdelta_send_string
@@ -5577,7 +5577,7 @@
return SVN_NO_ERROR;
str = svn_stringbuf_create (My text editor charges me rent.,
pool);
- apr_md5 (expected_digest, str-data, str-len);
+ apr_md5 (expected_digest, (unsigned char*)str-data, str-len);
SVN_ERR (svn_test__create_fs (fs, test-repo-verify-checksum,
pool));
SVN_ERR (svn_fs_begin_txn (txn, fs, 0, pool));
Index: subversion/tests/libsvn_repos/md5args.c
===================================================================
--- subversion/tests/libsvn_repos/md5args.c (revision 4481)
+++ subversion/tests/libsvn_repos/md5args.c (working copy)
@@ -97,7 +97,7 @@
printf (args=%s\n, string-data);
/* Now, run the MD5 digest calculation on that string. */
- apr_md5 (digest, string-data, string-len);
+ apr_md5 (digest, (unsigned char*)string-data, string-len);
digest_str = svn_stringbuf_create (, pool);
for (i = 0; i MD5_DIGESTSIZE; i++)
{
Index: subversion/libsvn_delta/text_delta.c
===================================================================
--- subversion/libsvn_delta/text_delta.c (revision 4481)
+++ subversion/libsvn_delta/text_delta.c (working copy)
@@ -288,7 +288,8 @@
APR_SUCCESS. As such, we are proposing to the APR folks
that
its interface change to be a void function. In the
meantime,
we'll simply ignore the return value. */
- apr_md5_update ((stream-context), stream-buf, source_len);
+ apr_md5_update ((stream-context), (unsigned
char*)stream-buf,
+ source_len);
/* Read the target stream. */
if (err == SVN_NO_ERROR)
@@ -515,7 +516,7 @@
svn_stream_closed(). But this might be overkill for issue #689;
so for now we just update the context here. */
if (ab-result_checksum)
- apr_md5_update((ab-md5_context), ab-tbuf, len);
+ apr_md5_update((ab-md5_context), (unsigned char*)ab-tbuf,
len);
return svn_stream_write (ab-target, ab-tbuf, );
}
Index: subversion/libsvn_ra_dav/fetch.c
===================================================================
--- subversion/libsvn_ra_dav/fetch.c (revision 4481)
+++ subversion/libsvn_ra_dav/fetch.c (working copy)
@@ -798,7 +798,7 @@
svn_stream_t *stream = fwc-stream;
if (fwc-do_checksum)
- apr_md5_update((fwc-md5_context), buf, len);
+ apr_md5_update((fwc-md5_context), (const unsigned char*) buf,
len);
/* Write however many bytes were passed in by neon. */
wlen = len;
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sat Oct 14 02:04:17 2006