39 Commits

Author SHA1 Message Date
Philip Withnall
70ee43f1e9 glib: Add SPDX license headers automatically
Add SPDX license (but not copyright) headers to all files which follow a
certain pattern in their existing non-machine-readable header comment.

This commit was entirely generated using the command:
```
git ls-files glib/*.[ch] | xargs perl -0777 -pi -e 's/\n \*\n \* This library is free software; you can redistribute it and\/or\n \* modify it under the terms of the GNU Lesser General Public/\n \*\n \* SPDX-License-Identifier: LGPL-2.1-or-later\n \*\n \* This library is free software; you can redistribute it and\/or\n \* modify it under the terms of the GNU Lesser General Public/igs'
```

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>

Helps: #1415
2022-05-18 09:19:02 +01:00
Philip Withnall
8d3c502074 gbase64: Fix documentation for line wrapping lengths
The implementation has always wrapped at 76 characters, rather than 72,
ever since it was introduced in commit 5cf8f1d4a8 in 2006. At this
stage, it’s probably best to fix the documentation rather than the
implementation.

The likely bug in the implementation is the comparison
```
(++already) >= 19
```

19 × 4 = 76, so it seems like an off-by-one error in the comparison.
What was actually wanted was 18 × 4 = 72.

Thanks to Simon McVittie for the investigation and diagnosis.

Signed-off-by: Philip Withnall <withnall@endlessm.com>

Fixes: #1997
2020-01-15 13:15:54 +00:00
Philip Withnall
2484d1c950 gbase64: Remove an unnecessary condition
At that point in the code, len can only be 0, 1 or 2. The code below is
a no-op if (len == 0), so the condition is pointless.

Remove it, and we should be able to achieve full branch coverage of
gbase64.c.

This should introduce no functional changes.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2019-02-27 11:21:43 +00:00
Philip Withnall
f9dfddf8eb gbase64: Fix an impossible condition
len is unsigned, so it’s not possible for it to be less than zero.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2019-02-27 10:44:48 +00:00
Philip Withnall
ff76f6920e gbase64: Allow g_base64_encode (NULL, 0) and g_base64_decode ("", *)
Relax a precondition in g_base64_encode_step() to allow this. It’s valid
to base64 encode an empty string, as per RFC 4648.

Similarly for g_base64_decode(), although calling it with a NULL string
has never been allowed. Instead, clarify the case of calling it with an
empty string.

This includes a unit test.

Signed-off-by: Philip Withnall <withnall@endlessm.com>

Fixes: #1698
2019-02-27 10:44:14 +00:00
Philip Withnall
86e099c134 gbase64: Convert a precondition from g_error() to g_return_val_if_fail()
The caller needs to check this themselves in any case, so we might as
well at least follow convention in defining the precondition.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2019-02-27 10:13:18 +00:00
Benjamin Otte
3aff811d13 Use G_GNUC_FALLTHROUGH where appropriate 2018-09-04 20:24:25 +02:00
Mikhail Zabaluev
01544c9269 Skip g_base64_decode_step() in introspection
The length of the caller-allocated (that flag was missing; added as well)
output array is calculated by a formula, so none of the usual array length
annotations apply. The state parameters need to be initialized with zero.

Just let them use the basic API.

https://bugzilla.gnome.org/show_bug.cgi?id=756103
2017-09-11 20:44:39 +01:00
Sébastien Wilmet
f9faac7661 glib/: LGPLv2+ -> LGPLv2.1+
All glib/*.{c,h} files have been processed, as well as gtester-report.

12 of those files are not licensed under LGPL:

	gbsearcharray.h
	gconstructor.h
	glibintl.h
	gmirroringtable.h
	gscripttable.h
	gtranslit-data.h
	gunibreak.h
	gunichartables.h
	gunicomp.h
	gunidecomp.h
	valgrind.h
	win_iconv.c

Some of them are generated files, some are licensed under a BSD-style
license and win_iconv.c is in the public domain.

Sub-directories inside glib/:

	deprecated/: processed in a previous commit
	glib-mirroring-tab/: already LGPLv2.1+
	gnulib/: not modified, the code is copied from gnulib
	libcharset/: a copy
	pcre/: a copy
	tests/: processed in a previous commit

https://bugzilla.gnome.org/show_bug.cgi?id=776504
2017-05-24 11:58:19 +02:00
Philip Withnall
35c0dd2755 gbase64: Fix base-64 stepped encoding with small chunks
If encoding with small chunks such that the call to
g_base64_encode_close() has to deal with 0 < x < 24 bits of remaining
state, the encoding code would not correctly use zeroes to pad out the
state — it would use left-over state from an earlier iteration in the
encoding process.

This resulted in invalid base-64 encodings.

Add a unit test for incremental encoding using different sized chunks
too.

Thanks to Rainier Perske for reporting and analysing the bug.

https://bugzilla.gnome.org/show_bug.cgi?id=780066

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2017-03-23 15:34:11 +00:00
Philip Withnall
e6e38f4b8a gbase64: Document that g_base64_encode_close() does not nul-terminate
Signed-off-by: Philip Withnall <withnall@endlessm.com>
2017-03-17 11:33:13 +00:00
William Jon McCann
20f4d1820b docs: use "Returns:" consistently
Instead of "Return value:".
2014-02-19 19:41:52 -05:00
Matthias Clasen
3232425785 Docs: replace <literal> by ` 2014-02-06 08:07:16 -05:00
Matthias Clasen
cb588d4532 Convert external links to markdown syntax 2014-02-05 21:23:28 -05:00
Daniel Mustieles
078dbda148 Updated FSF's address 2014-01-31 14:31:55 +01:00
David Schleef
9a08d81b0d Add warning to g_base64_decode()
https://bugzilla.gnome.org/show_bug.cgi?id=696015
2013-03-17 22:48:53 -04:00
Ognyan Tonchev
06a59f889a base64: Fix g_base64_decode_step ()
Do not produce invalid data if there was padding character in the
previous sequence.

https://bugzilla.gnome.org/show_bug.cgi?id=694843
2013-03-05 10:55:29 -05:00
Ravi Sankar Guntur
7486cd946a comments/docs: Fix couple of typos
https://bugzilla.gnome.org/show_bug.cgi?id=668857
2012-01-28 07:52:56 +01:00
Dan Winship
3691194b35 g_base64_encode_step: clarify break_lines behavior a bit
break_lines uses LFs, not CRLFs like you might expect (since it's
designed for email-related use), but we can't change that now since
the caller has to allocate the output buffer and so the
number-of-bytes-output is part of the ABI. So, just document that.

https://bugzilla.gnome.org/show_bug.cgi?id=668158
2012-01-18 09:02:21 -05:00
Giovanni Campagna
eebb3647a1 gbase64: fix introspection annotations
Makes the g_base64_* functions usable from introspection GLib bindings
(gjs, currently, as both vala and pygobject use manual bindings for
GLib)

https://bugzilla.gnome.org/show_bug.cgi?id=646635
2011-05-11 20:10:25 +02:00
Matthias Clasen
5d4ef36f91 Whitespace cleanup 2010-09-03 19:34:28 -04:00
Matthias Clasen
489b780bb9 Remove redundant header inclusions 2010-09-03 19:32:02 -04:00
Matthias Clasen
b5bda64a73 Fix up a doc typo 2010-08-08 23:55:11 -04:00
Ryan Lortie
a00fa340cb base64: remove unnecessary assertions
Allow base64 encoding/decoding of empty strings.
2010-07-07 22:18:47 -04:00
Ryan Lortie
2e53e50244 glib/: fully remove galias hacks 2010-07-07 19:34:35 -04:00
Matthias Clasen
dd7bd61c53 Documentation improvement
Document the size requirements on output buffer in g_base64_encode_close.
Patch by Christian Persch, bug 609564.
2010-02-21 16:04:21 -05:00
Craig Loftus
a465508e2d Migrate gbase64 docs from SGML template to inline comments
Fixes bug #589649.

Signed-off-by: David King <davidk@openismus.com>
2009-08-10 15:40:01 +02:00
Dan Winship
92ac8d165e Misc warning fixes
glib/pcre/pcre_ucp_search_funcs.c, glib/pcre/pcre_valid_utf8.c: add
back missing config.h includes, and this time add them to the copies
in glib/update-pcre/ too so they don't get lost again on the next PCRE
update.

glib/garray.c, glib/gbase64.c: fix signed/unsigned pointer casts

gio/xdgmime/xdgmimeglob.c: remove unused variable

gio/tests/live-g-file.c: fix printf args on x86_64

tests/Makefile.am, tests/regex-test.c: remove redundant -DENABLE_REGEX
2009-05-01 10:37:45 -04:00
Matthias Clasen
2ad1af5b1e Avoid integer overflows in the base64 functions. Fixes CVE-2008-4316
2009-03-12  Matthias Clasen  <mclasen@redhat.com>

        * glib/gbase64.c: Avoid integer overflows in the base64
        functions. Fixes CVE-2008-4316


svn path=/trunk/; revision=7973
2009-03-12 13:30:55 +00:00
Matthias Clasen
f548330275 Fix "it's" vs "its" confusion throughout the source. Patch by Will
* Fix "it's" vs "its" confusion throughout the source. Patch
        by Will Thompson.


svn path=/trunk/; revision=7897
2009-02-23 04:30:06 +00:00
Matthias Clasen
c8dd07333a Bug 564728 Add function to decode base64 encoded data in place
2009-01-13  Matthias Clasen  <mclasen@redhat.com>

        Bug 564728 Add function to decode base64 encoded data in place

        * glib/glib.symbols:
        * glib/gbase64.[hc] (g_base64_decode_inplace): New convenience
        API to decode in place, overwriting the input string. Patch by
        Sebastian Dröge.


svn path=/trunk/; revision=7807
2009-01-13 19:59:32 +00:00
Matthias Clasen
78c06eafe1 Don't refuse to encode a single byte. (Milan Crha)
2007-11-23  Matthias Clasen  <mclasen@redhat.com>

        * glib/gbase64.c (g_base64_encode): Don't refuse to encode
        a single byte.  (Milan Crha)

        * tests/base64-test.c: Test encoding short strings.



svn path=/trunk/; revision=5919
2007-11-23 17:58:00 +00:00
Matthias Clasen
29a0692575 Documentation improvements. (#496518, Stefan Schulze Frielinghaus)
2007-11-18  Matthias Clasen  <mclasen@redhat.com>

        * glib/gbase64.c: Documentation improvements.  (#496518,
        Stefan Schulze Frielinghaus)


svn path=/trunk/; revision=5864
2007-11-19 03:39:37 +00:00
Matthias Clasen
c182fecfa1 Warn if the input is too short. (#418862, Halton Huo)
2007-03-16  Matthias Clasen  <mclasen@redhat.com>

        * glib/gbase64.c (g_base64_decode): Warn if the input
        is too short.  (#418862, Halton Huo)



svn path=/trunk/; revision=5417
2007-03-16 19:50:14 +00:00
Matthias Clasen
5ae803a47f Add NULL checks to the base64 functions that take pointers. (#399611,
2007-03-06  Matthias Clasen  <mclasen@redhat.com>

        * glib/gbase64.c: Add NULL checks to the base64
        functions that take pointers.  (#399611, Martyn Russell)


svn path=/trunk/; revision=5371
2007-03-06 05:36:57 +00:00
Matthias Clasen
5f4e467f33 Fix typos in the docs. (#346660, Mark Drago)
2006-07-05  Matthias Clasen  <mclasen@redhat.com>

	* glib/gbase64.c: Fix typos in the docs.  (#346660, Mark
	Drago)
2006-07-05 16:42:19 +00:00
Alexander Larsson
ac059df75b Fix OOB write (#340538)
2006-05-04  Alexander Larsson  <alexl@redhat.com>

	* glib/gbase64.c: (g_base64_decode_step):
	Fix OOB write (#340538)
2006-05-04 15:53:36 +00:00
Matthias Clasen
6324ed6b34 Add base64 docs 2006-04-05 03:19:30 +00:00
Alexander Larsson
5cf8f1d4a8 Add base64 encode/decode functions
2006-04-04  Alexander Larsson  <alexl@redhat.com>

	* glib/Makefile.am:
	* glib/gbase64.[ch]:
	* glib/glib.symbols:
	Add base64 encode/decode functions

	* glib/glib.h:
	Include gbase64.h

	* tests/Makefile.am:
	* tests/base64-test.c:
	Tests for base64 functions
2006-04-04 13:03:23 +00:00