X-Git-Url: https://git.proxmox.com/?p=libxdgmime-perl.git;a=blobdiff_plain;f=xdgmime-source%2Fsrc%2Fxdgmimemagic.c;fp=xdgmime-source%2Fsrc%2Fxdgmimemagic.c;h=98a1274c87f3abc1fb39acd45f0e95654a71df43;hp=fd49fa8e682de9c69571c626e59b3e4d35c5a2b3;hb=748e495f5f5134b94187bf925095281ee70d33fc;hpb=3d40a0985da9c93e23b717d1ad0e02aeead6c271 diff --git a/xdgmime-source/src/xdgmimemagic.c b/xdgmime-source/src/xdgmimemagic.c index fd49fa8..98a1274 100644 --- a/xdgmime-source/src/xdgmimemagic.c +++ b/xdgmime-source/src/xdgmimemagic.c @@ -6,23 +6,7 @@ * Copyright (C) 2003 Red Hat, Inc. * Copyright (C) 2003 Jonathan Blandford * - * Licensed under the Academic Free License version 2.0 - * Or under the following terms: - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * SPDX-License-Identifier: LGPL-2.1-or-later or AFL-2.0 */ #ifdef HAVE_CONFIG_H @@ -103,6 +87,8 @@ _xdg_mime_magic_matchlet_new (void) XdgMimeMagicMatchlet *matchlet; matchlet = malloc (sizeof (XdgMimeMagicMatchlet)); + if (matchlet == NULL) + return NULL; matchlet->indent = 0; matchlet->offset = 0; @@ -355,6 +341,11 @@ _xdg_mime_magic_parse_magic_line (FILE *magic_file, return XDG_MIME_MAGIC_ERROR; matchlet = _xdg_mime_magic_matchlet_new (); + + /* OOM */ + if (matchlet == NULL) + return XDG_MIME_MAGIC_ERROR; + matchlet->indent = indent; matchlet->offset = _xdg_mime_magic_read_a_number (magic_file, &end_of_file); if (end_of_file) @@ -479,7 +470,9 @@ _xdg_mime_magic_parse_magic_line (FILE *magic_file, /* We clean up the matchlet, byte swapping if needed */ if (matchlet->word_size > 1) { +#if LITTLE_ENDIAN unsigned int i; +#endif if (matchlet->value_length % matchlet->word_size != 0) { _xdg_mime_magic_matchlet_free (matchlet); @@ -767,6 +760,11 @@ _xdg_mime_magic_read_magic_file (XdgMimeMagic *mime_magic, { case XDG_MIME_MAGIC_SECTION: match = _xdg_mime_magic_match_new (); + + /* OOM */ + if (match == NULL) + return; + state = _xdg_mime_magic_parse_header (magic_file, match); if (state == XDG_MIME_MAGIC_EOF || state == XDG_MIME_MAGIC_ERROR) _xdg_mime_magic_match_free (match); @@ -784,6 +782,11 @@ _xdg_mime_magic_read_magic_file (XdgMimeMagic *mime_magic, break; case XDG_MIME_MAGIC_ERROR: state = _xdg_mime_magic_parse_error (magic_file); + + /* After a parse error we can only be at EOF or reset to starting a + * new section. */ + assert (state == XDG_MIME_MAGIC_EOF || state == XDG_MIME_MAGIC_SECTION); + break; case XDG_MIME_MAGIC_EOF: default: