[pkg-fso-commits] [SCM] FSO frameworkd Debian packaging branch, debian, updated. upstream/0.9.5.5-717-g0f98819

Felix Huber felix.huber at schyf.de
Sat Aug 6 08:20:18 UTC 2011


The following commit has been merged in the debian branch:
commit b23de22df1ac6f7201110a636714b1ef187635c4
Author: Felix Huber <felix.huber at schyf.de>
Date:   Tue Feb 1 21:30:47 2011 +0100

    ogsmd: check len of name and number for phonebook

diff --git a/framework/subsystems/ogsmd/modems/abstract/mediator.py b/framework/subsystems/ogsmd/modems/abstract/mediator.py
index c4fb091..5b37856 100644
--- a/framework/subsystems/ogsmd/modems/abstract/mediator.py
+++ b/framework/subsystems/ogsmd/modems/abstract/mediator.py
@@ -848,6 +848,7 @@ class SimGetPhonebookInfo( SimMediator ):
             try:
                 result["number_length"] = int(match.groupdict()["numlen"])
                 result["name_length"] = int(match.groupdict()["textlen"])
+                self._object.modem.setPhonebookSizes( self.pbcategory, result["number_length"], result["name_length"] )
             except KeyError:
                 pass
 
@@ -950,7 +951,15 @@ class SimStoreEntry( SimMediator ):
             self._error( DBusError.InvalidParameter( "valid categories are %s" % const.PHONEBOOK_CATEGORY.keys() ) )
         else:
             number, ntype = currentModem().numberToPhonebookTuple( self.number )
-            name = self.name.strip('"').encode(charset)
+            name = self.name.strip('"')
+            numlength, textlength = self._object.modem.phonebookSizes( self.pbcategory )
+            if numlength is not None:
+                if len(number) > numlength:
+                   number = number[:numlength]
+            if textlength is not None:
+                if len(name) > textlength:
+                   name = name[:textlength]
+            name = name.encode(charset)
             self._commchannel.enqueue( '+CPBS="%s";+CPBW=%d,"%s",%d,"%s"' % ( self.pbcategory.encode(defcharset), self.index, number, ntype, name ), self.responseFromChannel, self.errorFromChannel )
 
 #=========================================================================#
diff --git a/framework/subsystems/ogsmd/modems/abstract/modem.py b/framework/subsystems/ogsmd/modems/abstract/modem.py
index 2f12dd0..8427b33 100644
--- a/framework/subsystems/ogsmd/modems/abstract/modem.py
+++ b/framework/subsystems/ogsmd/modems/abstract/modem.py
@@ -47,6 +47,7 @@ class AbstractModem( object ):
         self._simReady = "unknown"              # SIM data access state
         self._data = {}                         # misc modem-wide data, set/get from channels
         self._phonebookIndices = {}             # min. index, max. index
+        self._phonebookSizes = {}               # number length, name length
 
         self._data["sim-buffers-sms"] = True
         self._data["sms-buffered-cb"] = "2,1,2,1,1"
@@ -211,6 +212,20 @@ class AbstractModem( object ):
         else:
             return first, last
 
+    def setPhonebookSizes( self, category, numlength, textlength ):             
+        """        
+        Set phonebook names and number sizes for a given phonebook
+        """                                                 
+        self._phonebookSizes[category] = numlength, textlength
+                                                                                       
+    def phonebookSizes( self, category ):                              
+        try:                                                                                     
+            numlength, textlength = self._phonebookSizes[category]
+        except KeyError:                      
+            return None, None                                              
+        else:                                                                    
+            return numlength, textlength                                          
+
     def prepareForSuspend( self, ok_callback, error_callback ):
         """
         Prepares the modem for suspend.

-- 
FSO frameworkd Debian packaging



More information about the pkg-fso-commits mailing list