Commits

Anonymous committed de90b03 Merge

Merge "A build property's value is returned empty in runtime when its length exceeds 92 symbols (91 valid symbols + \0). It is better to catch that issue on earlier stage, i.e. fail the build with an appropriate message."

  • Participants
  • Parent commits bec954d, 115c66b

Comments (0)

Files changed (1)

File tools/post_process_props.py

 # Put the modifications that you need to make into the /system/build.prop into this
 # function. The prop object has get(name) and put(name,value) methods.
 def mangle_build_prop(prop):
-  pass
+  buildprops=prop.buildprops
+  check_pass=True
+  for key in buildprops:
+    # Check build properties' length.
+    # Terminator(\0) added into the provided value of properties
+    # Total length (including terminator) will be no greater that PROP_VALUE_MAX(92).
+    if len(buildprops[key]) > 91:
+      # If dev build, show a warning message, otherwise fail the build with error message
+      if prop.get("ro.build.version.incremental").startswith("eng"):
+        sys.stderr.write("warning: " + key + " exceeds 91 symbols: ")
+        sys.stderr.write(buildprops[key])
+        sys.stderr.write("(" + str(len(buildprops[key])) + ") \n")
+        sys.stderr.write("warning: This will cause the " + key + " ")
+        sys.stderr.write("property return as empty at runtime\n")
+      else:
+        check_pass=False
+        sys.stderr.write("error: " + key + " cannot exceed 91 symbols: ")
+        sys.stderr.write(buildprops[key])
+        sys.stderr.write("(" + str(len(buildprops[key])) + ") \n")
+  if not check_pass:
+    sys.exit(1)
 
 # Put the modifications that you need to make into the /system/build.prop into this
 # function. The prop object has get(name) and put(name,value) methods.
     prop.put("persist.sys.usb.config", "none");
 
 class PropFile:
+
+  buildprops={}
+
   def __init__(self, lines):
     self.lines = [s[:-1] for s in lines]
+    for line in self.lines:
+      line=line.strip()
+      if not line.strip() or line.startswith("#"):
+        continue
+      index=line.find("=")
+      key=line[0:index]
+      value=line[index+1:]
+      self.buildprops[key]=value
 
   def get(self, name):
     key = name + "="