summaryrefslogtreecommitdiff
path: root/sys-apps/systemd/files/compile-unifont.py
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2017-01-25 17:37:21 +0000
committerV3n3RiX <venerix@redcorelinux.org>2017-01-25 17:37:21 +0000
commit011dbc9d6821df057bf337438aaaefbff6b7612c (patch)
treef3bc445e402088bf99b6dbe1122e1db621bd4167 /sys-apps/systemd/files/compile-unifont.py
parent8b1caee825d7881ebb89fd53014de58fd85e7cd2 (diff)
systemd security update : https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-10156
Diffstat (limited to 'sys-apps/systemd/files/compile-unifont.py')
-rw-r--r--sys-apps/systemd/files/compile-unifont.py119
1 files changed, 0 insertions, 119 deletions
diff --git a/sys-apps/systemd/files/compile-unifont.py b/sys-apps/systemd/files/compile-unifont.py
deleted file mode 100644
index 5464c53e..00000000
--- a/sys-apps/systemd/files/compile-unifont.py
+++ /dev/null
@@ -1,119 +0,0 @@
-# -*- Mode: python; coding: utf-8; indent-tabs-mode: nil -*- */
-#
-# This file is part of systemd.
-#
-# Copyright 2013-2014 David Herrmann <dh.herrmann@gmail.com>
-#
-# systemd 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.1 of the License, or
-# (at your option) any later version.
-#
-# systemd 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 systemd; If not, see <http://www.gnu.org/licenses/>.
-
-#
-# Parse a unifont.hex file and produce a compressed binary-format.
-#
-
-from __future__ import print_function
-import re
-import sys
-import fileinput
-import struct
-
-#
-# Write "bits" array as binary output.
-#
-
-
-write = getattr(sys.stdout, 'buffer', sys.stdout).write
-
-def write_bin_entry(entry):
- l = len(entry)
- if l != 32 and l != 64:
- entry = "0" * 64
- l = 0
- elif l < 64:
- entry += "0" * (64 - l)
-
- write(struct.pack('B', int(l / 32))) # width
- write(struct.pack('B', 0)) # padding
- write(struct.pack('H', 0)) # padding
- write(struct.pack('I', 0)) # padding
-
- i = 0
- for j in range(0, 16):
- for k in range(0, 2):
- if l <= k * 16 * 2:
- c = 0
- else:
- c = int(entry[i:i+2], 16)
- i += 2
-
- write(struct.pack('B', c))
-
-def write_bin(bits):
- write(struct.pack('B', 0x44)) # ASCII: 'D'
- write(struct.pack('B', 0x56)) # ASCII: 'V'
- write(struct.pack('B', 0x44)) # ASCII: 'D'
- write(struct.pack('B', 0x48)) # ASCII: 'H'
- write(struct.pack('B', 0x52)) # ASCII: 'R'
- write(struct.pack('B', 0x4d)) # ASCII: 'M'
- write(struct.pack('B', 0x55)) # ASCII: 'U'
- write(struct.pack('B', 0x46)) # ASCII: 'F'
- write(struct.pack('<I', 0)) # compatible-flags
- write(struct.pack('<I', 0)) # incompatible-flags
- write(struct.pack('<I', 32)) # header-size
- write(struct.pack('<H', 8)) # glyph-header-size
- write(struct.pack('<H', 2)) # glyph-stride
- write(struct.pack('<Q', 32)) # glyph-body-size
-
- # write glyphs
- for idx in range(len(bits)):
- write_bin_entry(bits[idx])
-
-#
-# Parse hex file into "bits" array
-#
-
-def parse_hex_line(bits, line):
- m = re.match(r"^([0-9A-Fa-f]+):([0-9A-Fa-f]+)$", line)
- if m == None:
- return
-
- idx = int(m.group(1), 16)
- val = m.group(2)
-
- # insert skipped lines
- for i in range(len(bits), idx):
- bits.append("")
-
- bits.insert(idx, val)
-
-def parse_hex():
- bits = []
-
- for line in sys.stdin:
- if not line:
- continue
- if line.startswith("#"):
- continue
-
- parse_hex_line(bits, line)
-
- return bits
-
-#
-# In normal mode we simply read line by line from standard-input and write the
-# binary-file to standard-output.
-#
-
-if __name__ == "__main__":
- bits = parse_hex()
- write_bin(bits)